Я хочу запускать скрипт python каждые 24 часа, каждые 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
Этот крошечный сценарий оболочки вычисляет количество секунд, оставшихся до следующей полуночи, минус десять секунд (я почти наверняка мог бы сделать это более элегантно, но такова жизнь). Затем он запускает вашу работу python в фоновом режиме и засыпает на столько секунд, поэтому просыпается в 23:59:50, затем завершает фоновое задание и завершает работу. Для более профессионального подхода при запуске задание должно также проверять, запущена ли другая копия, и завершать работу (с ошибкой в вашей системе мониторинга), если это так.
Вы можете безопасно запустить это из cron один раз день в полночь:
0 0 * * * /usr/local/bin/noddy-printer-script
Вы также можете запустить его сразу из оболочки, потому что он соответствующим образом отрегулирует интервал сна.
Обратите внимание, что Nikhil_CV делает хорошее замечание выше; */24
не значит каждый час до 25 но вместо этого означает когда час 0 или 24, что, поскольку последнее никогда не происходит, означает только когда час = 0, вот почему ваша работа не работает в 10 утра. Приходите в следующую полночь, cron
следующий час будет тратить на запуск копии задания каждую минуту, что, вероятно, не то, что вам нужно. Также обратите внимание, что ваша коробка CentOS 6 безнадежно вышедший из патча и уязвимый и вам следует немедленно обновить его до C6.9.