2010-08-10 51 views
2

這更像是一個「一般架構」問題。如果您有定期運行的cron作業(甚至是Windows計劃任務),它可以讓您發送一封電子郵件/短信息,但一切都很順利,但是如何在不知所措的情況下獲得通知?基本上,如果作業沒有在預定的時間運行,或者Windows/linux有自己的一組掛起來阻止任務運行...?如何設置系統來告訴我cron作業是否運行不正常?

就求過誰遇到這種情況之前並拿出有趣的解決方案的人的想法...

+0

有趣的問題... +1 – alex 2010-08-10 05:59:03

+0

做一個cron工作,檢查cron工作:D – 2010-08-10 06:19:01

+0

儘管幽默,大衛,這是不是一個壞的建議。單個cron作業可能由於許多原因而失敗,其中只有一個是整個cron子系統關閉。 – paxdiablo 2010-08-10 06:30:36

回答

0

我已經在過去做了它的一種方法是簡單地把在每個腳本的頂部(說,checkUsers.sh):

touch /tmp/lastrun/checkUsers.sh 

然後有一個定期運行使用find定位在tmp/lastrun所有這些「標誌」的文件是超過一天舊的另一份工作。

您可以調整時間,讓/tmp/lastrun/hour/tmp/lastrun/day/分開具有不同時間表的作業。

請注意,這將不會捕獲具有永不的腳本,因爲它們將永遠不會爲find -ing創建初始文件。爲了緩解這種情況,您可以:

  • 創建cron作業時手動創建該文件(不會處理某些人無意中刪除標記文件的情況);或
  • 在某處維護所需標記文件的列表,以便您可以檢測它們何時缺失以及過時。

而且,如果你的cron作業是不是一個腳本,把touch直接進入crontab

0 4 * * * (touch /tmp/lastrun/daily/checkUsers ; /usr/bin/checkUsers) 

這是一個更容易驗證一個簡單的find腳本,而不是驗證cron工作的每一個。

+0

如果這是一個愚蠢的問題,請原諒我,但是如果一個cron失敗了,它們可能都會(如果是硬件或軟件錯誤)? – alex 2010-08-10 06:03:53

+0

不一定,問題可能與crontab文件中的行有關,也可能是腳本的權限。如果cron本身有問題,是的。然後你可以把它放在你的登錄腳本中(或者'/ etc/profile'或者在其他地方掛載一個NFS文件系統來觸及它上面的文件,希望它的cron可以運行檢查)。但是,如果'cron'本身無法正常工作,則自動執行檢查的方法很少。在某些時候,你必須相信軟件的一層功能可以正常工作:-)我沒有說它是萬無一失的 - 它所做的一切就是更容易檢測到故障。 – paxdiablo 2010-08-10 06:11:28

+0

有趣的方法...不_exactly_我​​正在尋找...(一個更完整的解決方案,也可能使用外部系統) – DrMHC 2010-08-22 03:16:30