Хотя функция sleep
будет работать для некоторых целей, если вы пытаетесь делать «каждые 20 секунд, навсегда», вам лучше использовать внешнюю утилиту, например cron
.
В дополнение к уже упомянутой возможной проблеме дрейфа, если ваш sleep
скрипт завершает работу (ожидаемо или нет), он не будет запускаться снова в следующие 20 секунд.
@ Blrfl - это правильно, и я чувствую себя застенчиво. Тем не менее, это достаточно легко преодолеть.
* * * * * /path/to/script.pl
* * * * * sleep 20 && /path/to/script.pl
* * * * * sleep 40 && /path/to/script.pl
Вы также можете использовать гибридный подход, заключающийся в том, что в сценарий включается цикл сна с ограниченным числом операций и использование cron для запуска каждые X минут, что покрывает случай смерти сценария. Что-нибудь более частое, чем 20 секунд, я бы определенно воспользовался этим подходом.