是否有程序可以在流程完成時向我發送通知電子郵件?
我是一名計算科學家,我在 Linux 上執行了很多冗長的計算。具體來說,我使用GROMACS 包執行分子動力學 (MD) 模擬。 這些模擬可能需要幾天或幾週的時間,在(例如)8 到 24 個核心上執行。我可以訪問集群的多個節點,這意味著在任何給定時間,我都在執行大約 4 或 5 個作業(每個作業在不同的節點上,每個作業在 8-24 個核心上)。
問題是模擬需要可變的時間。我喜歡讓所有節點全天候進行模擬,但要開始新的模擬,我需要使用終端登錄並做一些手動工作。但我總是忘記模擬還剩下多少時間,所以我總是不斷地檢查它們。
有什麼方法可以在 Linux 程序完成時收到電子郵件?有沒有一個Linux程序可以做到這一點?這樣我就知道何時使用終端登錄並準備下一次模擬。
我正在使用 Ubuntu Linux。謝謝你的時間。
送出給
at
守護程序的作業將在完成後從 stderr 和 stdout 向您發送任何輸出。即使作業沒有輸出,它也可以配置為發送郵件。它還具有在沒有控制終端的情況下執行的好處,因此您不必擔心關閉終端對工作的影響。例子:
echo "/opt/product/bin/job.sh data123"|at -m NOW
當此作業完成時,送出作業的使用者將收到一封電子郵件,如果有任何輸出,您將收到它。您可以通過更改
LOGNAME
環境變數來更改電子郵件收件人。
at
具有批處理模式,您可以在其中排隊作業以在系統不忙時執行。當多個使用者競爭資源時,這不是一個很好的排隊系統,但是,如果你想用它執行作業:echo "/opt/product/bin/job.sh dataA"|batch echo "/opt/product/bin/job.sh dataB"|batch echo "/opt/product/bin/job.sh dataC"|batch
預設情況下,除非系統負載低於 1.5,否則作業不會啟動,但可以調整負載數字(我認為應該使用 24 個核心)。如果它們沒有使 loadavg 超過負載限制(再次預設為 1.5),它們可以並行執行,或者如果它們單獨將 loadavg 超過 1.5,它們將串列執行。
您可以使用 查看作業隊列
atq
,並使用刪除作業atrm
回答依賴:
- 執行
atd
守護程序 (ps -ef|grep atd
)- 您可以送出作業
atd
(不被/etc/at.deny
//etc/at.allow
配置拒絕)- 功能性
sendmail
MTA大多數係統對這些要求沒有問題,但值得檢查。
是的,有
command; echo "Process done" | mail -s "Process done" mail@domain.tld
其中 -s “text” 是主題,echo 給郵件一些 Text 發送給你。