У меня есть одно задание, которое должно выполняться каждые 10 секунд, а затем у меня есть другое, которое должно выполняться каждые 60 секунд. Однако кажется, что тот, который должен запускаться каждые 10 секунд, запускается только после того, который запускается каждые 60 секунд ... так что технически он запускается только один раз в минуту.
Вот порядок, в котором они 're in:
* * * * * ( sleep 10 ; /bin/bash -l -c 'ruby /root/script.rb')
0 * * * * /bin/bash -l -c 'ruby /root/another_script.rb'
Я думал, что они будут работать параллельно друг другу, если когда-нибудь понадобится. Очевидно, я должен что-то делать неправильно.
Любая помощь будет принята с благодарностью.
Это поля cron (из man -i 5 crontab
):
field allowed values
----- --------------
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names, see below)
day of week 0-7 (0 or 7 is Sun, or use names)
Как видите, второго поля нет. Чтобы запускать задание каждые 10 секунд, вы должны использовать цикл в своем скрипте. Один из вариантов - запускать скрипт из cron каждую минуту и запускать скрипт через 0, 10, 20, 30, 40 и 50 секунд.
Вот шаблон, который вы можете использовать для этого скрипта:
for i in $(seq 0 5); do echo $i; sleep 10; done