Centos6

每 24 小時執行一次 cron 並立即啟動

  • May 18, 2018

我想每 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。

引用自:https://serverfault.com/questions/912758