Cron задания-для запуска каждые 5 секунд
Я хочу создать задание cron которое запускает скрипт каждые 5 секунд. Видя, что задания cron позволяют только инкременты минут 0-59 и так далее.
Я думал создать другой скрипт, который вызывает мой оригинальный скрипт, написанный ниже.
#!/bin/bash
while true
do
# script in the same directory as this script. is this correct?
bash makemehappy.sh
sleep 1
done
теперь мне нужно знать, как запускать этот скрипт каждый раз, когда я загружаю свой компьютер, и чтобы он запускался сам, если он не работает по какой-то причине.
Я также знаю, что запуск этого сценария каждую минуту не будет хорошим вещь. :)
если есть более простой способ для запуска скрипта каждые 5 секунд, пожалуйста.
пожалуйста, и спасибо.
4 ответов
Я бы не использовал cron для этого. Я бы использовал этот скрипт bash (используйте абсолютный путь, если вы не хотите, чтобы он был портативным и знаю, что структура каталогов сохранится).
вместо этого я бы просто sleep 5
, как и вы (всего 5 секунд вместо 1).
что касается запуска его с вашей системой, это зависит от системы. На (некоторых) дистрибутивах Linux есть файл с именем /etc/rc.local
в котором вы можете добавлять скрипты для запуска, когда система начинает. Что ж... Я не должен быть таким общим, дистрибутивы, которые я использовал, имеют это. Если вы используете Ubuntu, больше нет inittab, они используют upstart, кстати.
Так что если у вас есть бесконечный цикл и запись в /etc/rc.local
, тогда вы должны быть золотыми, чтобы он работал бесконечно (или пока он не столкнется с проблемой и не выйдет).
попробуйте использовать anacron или, еще лучше, сценарий инициализации для запуска при запуске компьютера.
Если вы хотите, чтобы скрипт "перезагрузился", вам нужно будет запускать что-то каждые несколько минут, чтобы проверить, что оригинал все еще работает. Это можно сделать в inittab (/etc/inittab
) или, на Ubuntu,/etc/event.d
. Попробуй!--2-->, глядя на опцию "respawn".
некоторые cron
е у @reboot
спецификатор времени (это охватывает все поля времени и даты). Если ваш, вы можете использовать это. Если это" системная " служба (а не что-то, работающее для себя), другие решения здесь, вероятно, лучше.
сценарии инициализации хороши при загрузке, но не обнаруживают, если процесс завершается неудачно и должен быть перезапущен. supervisord
делает большую работу по обнаружению неудачных процессов и перезапуску их. Я бы рекомендовал сценарий с 5-секундным циклом, как описано в @Tim, но wrap supervisord
вокруг него, чтобы убедиться, что он продолжает работать.