Как запускать задание cron через каждые 5 часов - PullRequest
0 голосов
/ 07 мая 2018

Как запустить задание Cron с интервалом в 5 часов?

Я пробовал это

0 */5 * * * /path/to/script/script.sh (Not necessarily a shell script)

Но проблема с этим expression в том, что он будет запускаться каждые 5 hour, но часы будут сбрасываться в полночь 00:00:00 каждый день.

Объяснение: если задание выполняется в полночь 00:00:00, то следующим будет время выполнения

00:00:00, 05:00:00, 10:00:00, 15:00:00, 20:00:00

после 20:00:00 задание будет выполнено в 00:00:00, что на 1 hour раньше указанного.

Но мое требование заключается в том, что задание должно выполняться с интервалом в 5 часов и не должно сбрасываться в полночь

Таким образом, если задание начинается в полночь 00:00:00, следующим должно быть выполнение.

00:00:00, 05:00:00, 10:00:00, 15:00:00, 20:00:00, (Day 1)
01:00:00, 06:00:00, 11:00:00, 16:00:00, 21:00:00, (Day 2)
02:00:00 ...                                      (Day 3)

Как мне добиться следующего через Cron? Любая помощь будет оценена.

1 Ответ

0 голосов
/ 07 мая 2018

Один вариант из этого сообщения на форуме на unix.com Запускайте его каждый час и добавляйте в свой скрипт:

time_ct=$(cat /tmp/cron_time_ct)
if [ $time_ct -lt 5 ]
   then
     echo "Not yet time"
     time_ct=$((time_ct+1))
     echo $time_ct > /tmp/cron_time_ct
     exit
   else
     time_ct=0
     echo $time_ct > /tmp/cron_time_ct
fi
# rest of your task

Я сделал то же самое, чтобы сделать логику типа «каждый второй понедельник». Запуск сценария каждый понедельник и разрешение только на выполнение всех остальных сценариев.

...