2012-08-15 99 views
4

我在做一個研究項目,要求我監視Ubuntu Linux系統上的cron作業。我收集了關於工作任務的數據,當他們開始工作時,我只是不知道監控工作完成的時間。cron作業:監視完成作業的時間

我可以計算完成任務的時間減去開始它的時間with something like this但這需要在每個cron作業的Shell腳本上執行此操作。這並不一定困難,但看起來有點傻,cron不會以某種方式記錄這一點,所以我試圖找到一個更簡單的方法:P

tl; dr找出時間cron作業從開始至結束

+0

很多服務的東西都是特定於版本的,尤其是'cron'。 14.04與16.04不同,14.04系統升級到16.04更像是14.04系統。除非明確說明正在討論什麼樣的系統,否則很難回答這個問題。 – SDsolar 2017-10-21 06:30:31

回答

9

您可以將time放在crontabs的前面,如果您收到有關cron腳本輸出的通知,它會發送給您。

例如,如果您有:

0 1,13 * * * /maint/run_webalizer.sh 

0 1,13 * * * time /maint/run_webalizer.sh 

添加time,你會得到一些輸出,看起來像(「真實」是你想要的時間) :

real 3m1.255s 
user 0m37.890s 
sys  0m3.492s 

如果您沒有收到cron通知,則可以將輸出傳送到文件。

+0

這看起來像會起作用!我的問題可能出於Linux/Shell /等的愚蠢的缺乏經驗,但我需要了解更多的事情......因爲這些任務在沒有我創建它們的情況下運行(它們是我的機器上添加的默認任務/ etc/crontab),在哪裏打印出來讓我看看?這項工作會自動打開一個終端嗎?謝謝:) – connergdavis 2012-08-15 17:55:18

+1

@connergdavis我喜歡說,通常cron實現會將從cron作業打印出來(stdout)的內容發送給root或某個管理員的電子郵件地址。如果你沒有這樣的設置,你可以嘗試將輸出管道輸出到一個文件:'time /maint/run_webalizer.sh> /maint/webalizer_out' – 2012-08-15 17:59:07

+0

哦,好的,那太棒了。非常感謝你!:D – connergdavis 2012-08-15 17:59:39

1

man time。也許你可以創建一個包裝並告訴Cron使用它作爲你的「外殼」或類似的東西。

+0

注意接受答案後的評論。 '&>'是捕獲它的方式,就像它在終端窗口中運行一樣。 – SDsolar 2017-10-21 06:55:22

0

Cronitor(https://cronitor.io)是一種工具,我建立正是爲了這個目的。它使用http請求來記錄作業的開始和結束。

如果您的工作沒有按計劃運行,或者運行時間太長/太短,您會收到通知。您還可以配置它通過電子郵件,短信,但還包括Slack,Hipchat,Pagerduty等發送警報。