Задание cron, указанное как
0 */5 * * * script.sh
будет выполняться в качестве второго варианта с четырехчасовым интервалом между заданием в 20 :00 и 00 :00.
Вы можете попробовать использовать пять рабочих спецификаций:
0 0-20/5 1-31/5 * * script.sh
0 1-21/5 2-31/5 * * script.sh
0 2-22/5 3-31/5 * * script.sh
0 3-23/5 4-31/5 * * script.sh
0 4-19/5 5-31/5 * * script.sh
Третье поле — день месяца. Это позволит идеально выполнять вашу работу каждые пять часов в месяцах, кратных пяти дням. В другие месяцы у вас будет такая же проблема со слишком короткой задержкой между последним запуском задания в месяце и первым запуском в новом месяце.
Это может быть нормально. Если это не так, вы можете рассмотреть возможность запуска задания в качестве фонового задания в бесконечном цикле со встроенной 5-часовой задержкой -.
#!/bin/sh
while true; do
script.sh &
sleep 18000 # 5h
done
Вышеупомянутый сценарий представляет собой управляющий сценарий, который будет работать в фоновом режиме.
Очевидно, что после большого количества итераций он начнет слегка дрейфовать, и у вас могут возникнуть трудности с запуском точно в час.
Другая идея состоит в том, чтобы позволить сценарию самому перепланировать себя, используяat
:
#!/bin/sh
echo script.sh | at now + 5 hours
# rest of script goes here.