Запуск 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 их скрипт не работает. Я пытался /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
задан 18 May 2018 в 06:23
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 , что, поскольку последнее никогда не происходит, означает только when hour = 0 , поэтому ваша работа не запускается в 10:00. Приходите в следующую полночь, cron потратит следующий час на запуск копии задания каждую минуту, что, вероятно, не то, что вам нужно. Также обратите внимание, что ваш CentOS 6 безнадежно вышел из исправления и уязвим , и вам следует немедленно обновить его до C6.9.

5
ответ дан 3 December 2019 в 17:02

Теги

Похожие вопросы