每 24 小時執行一次 cron 並立即啟動
我想每 24 小時執行一次 python 腳本,每 23:59:58 我想終止這項工作。我想立即執行 python。因此我在下面使用這種語法
* */24 * * * cd /ftp/ftp1 && timeout -s 9 86398 python2.6 lpr_10.10.252.121.py 10.10.252.121 450 >> res_10.10.252.121.txt
但是在 cron 日誌中,他們的腳本沒有執行。我已經嘗試過
/etc/rc.d/init.d/crond restart
這是日誌cron
May 18 10:13:45 cisco-cumc crontab[31368]: (root) REPLACE (root) May 18 10:13:45 cisco-cumc crontab[31368]: (root) END EDIT (root) May 18 10:14:01 cisco-cumc crond[5090]: (root) RELOAD (/var/spool/cron/root) May 18 10:15:24 cisco-cumc crontab[31449]: (root) BEGIN EDIT (root) May 18 10:15:42 cisco-cumc crontab[31449]: (root) REPLACE (root) May 18 10:15:42 cisco-cumc crontab[31449]: (root) END EDIT (root) May 18 10:15:46 cisco-cumc crontab[31451]: (root) LIST (root) May 18 10:15:57 cisco-cumc crond[5090]: (CRON) INFO (Shutting down) May 18 10:15:57 cisco-cumc crond[31471]: (CRON) STARTUP (1.4.4) May 18 10:15:57 cisco-cumc crond[31471]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 73% if used.) May 18 10:15:57 cisco-cumc crond[31471]: (CRON) INFO (running with inotify support) May 18 10:15:57 cisco-cumc crond[31471]: (CRON) INFO (@reboot jobs will be run at computer's startup.)
試過了
ps -ax | grep python
沒有執行 python 腳本
那麼如何每 24 小時執行一次腳本並立即啟動呢?我的機器在 centos 6.4 上執行 謝謝
你這是錯的。
cron
旨在在已知的未來時間開始無人看管的工作;它的目的不是現在啟動它們,也不是為了阻止它們。當你折磨一個工具去做它不應該做的事情時,你可能會陷入一團糟,就像現在一樣。讓工作自行關閉。考慮類似的東西
#!/bin/bash cd /ftp/ftp1 let pause=86400+`date +%s -d 0000`-`date +%s`-10 python2.6 lpr_10.10.252.121.py 10.10.252.121 450 >> res_10.10.252.121.txt & sleep $pause kill -15 %1 exit 0
這個小小的 shellscript 計算從現在到下一個午夜之間剩下的秒數,減去十秒(我幾乎可以肯定地做得更優雅,但是c’est la vie)。然後它在後台啟動您的 python 作業並進入睡眠狀態,因此在 23:59:50 醒來,然後終止後台作業並退出。對於更專業的方法,該作業還應該在啟動時檢查另一個副本是否正在執行,如果是,則終止(對您的監控系統有錯誤)。
您可以每天午夜從 cron 安全地啟動它**:**
0 0 * * * /usr/local/bin/noddy-printer-script
您也可以立即從 shell 啟動它,因為它會相應地調整睡眠間隔。
請注意,Nikhil_CV 在上面提出了一個很好的觀點;
*/24
並不意味著每小時直到 25而是意味著當 hour 為 0 或 24時,因為後者永遠不會發生意味著僅當 hour=0 時,這就是您的工作沒有在上午 10 點執行的原因。到了下一個午夜,接下來cron
的一個小時將花在每分鐘開始一份工作的副本上,這可能不是你想要的。另請注意,您的 CentOS 6 機器已無可救藥地過時且易受攻擊,您應該立即將其升級到 C6.9。