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 вокруг него, чтобы убедиться, что он продолжает работать.