Запуск cron каждые 24 часа и запуск сразу

Я хочу запускать какой-нибудь скрипт 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 log их скрипт не работает. Я пытаюсь /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 спасибо

1 ответ

Вы идете об этом неправильно. 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

Этот крошечный скрипт вычисляет количество секунд, оставшихся между текущей и следующей полуночью, минус десять секунд (я почти наверняка сделал бы это более элегантно, но c'est la vie). Затем он запускает вашу работу на Python в фоновом режиме и засыпает на столько секунд, поэтому просыпается в 23:59:50, затем убивает фоновую работу и выходит. Для более профессионального подхода задание также должно при запуске проверить, запущена ли другая копия, и прекратить (с ошибкой в ​​вашей системе мониторинга), если это так.

Вы можете начать это безопасно с cron один раз в день в полночь:

0 0 * * *  /usr/local/bin/noddy-printer-script

Вы также можете запустить его сразу из оболочки, потому что он соответствующим образом отрегулирует разрыв сна.

Обратите внимание, что Nikhil_CV делает хорошую точку выше; */24 не означает каждый час до 25, а вместо этого означает, что час равен 0 или 24, что, поскольку последнее никогда не происходит, означает только, когда час = 0, поэтому ваша работа не выполняется в 10:00. Приходи в следующую полночь, cron будет тратить следующий час на запуск задания каждую минуту, что, вероятно, не то, что вам нужно. Также обратите внимание, что ваш CentOS 6 безнадежно лишен патча и уязвим, и вы должны немедленно довести его до C6.9.

Другие вопросы по тегам