2012-09-07 35 views
1

在我的問題中,我會得到一個數字n。我需要創建一個cron配置來在n天內運行一次腳本。用bash生成cron配置?

例如,如果n = 20,腳本應該每20天運行一次。

有什麼建議嗎?

回答

2

該配置將是醜死了,如果沒有做不成的(你可以有枚舉將永遠執行每一天..)

這是一個更容易創建一個配置所以它的每個執行天。然後在腳本中(或在包裝腳本中)檢查它是否應該實際執行。

這一檢查可用

  • 運算來完成,像這樣:daycounter=$((($(date +%s)/(60*60*24)) % 20))
  • 一個狀態文件,它具有存儲最後執行時間的創建日期

基於文件的解決方案具有更高的容錯能力,如果您的服務器在計劃當天停機,則會在第二天執行,而計算則在下一個週期(20天后)計劃。

如果包裹在一個文件中的功能,您的cron項看起來很漂亮:

10 1 * * * executeeveryxday nameofthestatefile 20 "command to execute" 

當然,如果你有更多的服務器和條目,並希望從一箇中心位置管理這個,也許是更好地從數據庫中獲取任務..