Linux
在linux中,是否可以每天比前一天晚3分鐘執行腳本?
我對此的第一個解決方案是執行
date +%Y%m%d%H%M
該格式的數字並將其放入文件中,然後每分鐘從 cron 執行腳本。然後,如果文件中的日期與 date 命令匹配,則腳本將執行某些操作。然後它將在第二天加上 3 分鐘更新該文件。有沒有更好的方法來實現這一點?結果將是腳本將在第一天(例如)凌晨 4:00 執行,然後第二天在凌晨 4:03 執行,第三天在凌晨 4:06 執行。它會每分鐘執行一次,但只在正確的時間執行(如果阻塞)。
問題和我的解決方案是否清楚?
您可以
at
在腳本(或包裝器)中使用該命令。給它時間執行下一次迭代。echo '/dir/scriptname' | at 'now + 1443 minutes'
將該行盡可能靠近腳本的開頭以減少漂移。
您應該使用
at
而不是cron
,它將允許您只執行一次任務。然後它可以重新安排自己的時間。好吧,我想建議對您自己的解決方案進行一些改進——如果您堅持下去的話。但是,它仍然需要通過以下方式每分鐘執行一次腳本
cron
:當腳本上次執行時,您無需操作任何設置或跟踪,您可以使用 UNIX 時間戳達到相同的目標:
一天有
60*60*24 = 86400
幾秒鐘。如果您3*60 = 480
從您的要求中添加,您有86880
幾秒鐘的時間 - 這正是您希望腳本執行的時間間隔。在腳本中,您現在可以檢查目前 UNIX 時間 %(模)該秒數是否等於 0,否則中止。如果您需要明確的首次執行,例如 2012 年 6 月 5 日凌晨 4:00,您可以
1338861600
先從本地時間中減去關聯的時間戳 ( ),檢查它是否不小於零,然後繼續計算差值。 ..當然,你也可以讓腳本修改它自己的
crontab
條目,但這很冒險,也有點尷尬。