У меня есть сценарий, который нужно запускать каждые пять секунд. Я знаю, что cron
может выполнять задания поминутно, но есть ли способ запускать что-то каждую секунду?
У меня есть сценарий, который нужно запускать каждые пять секунд. Я знаю, что cron
может выполнять задания поминутно, но есть ли способ запускать что-то каждую секунду?
Cron допускает, как минимум, одну минуту. То, что вы могли сделать, это написать сценарий оболочки с бесконечным циклом, который запускает вашу задачу, а затем спит в течение 5 секунд. Таким образом, ваша задача будет выполняться более или менее каждые 5 секунд, в зависимости от того, сколько времени занимает сама задача.
#!/bin/bash
while true; do
# Do something
sleep 5;
done
Вы можете создать файл my-task.sh
с указанным выше содержимым и запустить его с sh my-task.sh
. При желании вы можете настроить его с помощью supervisor
в качестве службы, чтобы он запускался при загрузке системы и т. Д.
На самом деле звучит так, будто вы делаете что-то, что вам, вероятно, не следует делать. Это кажется неправильным .
У вас может быть задание cron
запускает скрипт каждую минуту, которая запускает 12 исходных процессов:
* * * * * ~/dostuff.sh
dostuff.sh
:
(sleep 5 && /path/to/task) &
(sleep 10 && /path/to/task) &
(sleep 15 && /path/to/task) &
(sleep 20 && /path/to/task) &
(sleep 25 && /path/to/task) &
(sleep 30 && /path/to/task) &
(sleep 35 && /path/to/task) &
(sleep 40 && /path/to/task) &
(sleep 45 && /path/to/task) &
(sleep 50 && /path/to/task) &
(sleep 55 && /path/to/task) &
(sleep 60 && /path/to/task) &
Мой вопрос, однако, заключается в Что на EARTH вы можете выполнять каждые 5 секунд?
Просто используйте цикл:
while true ; do ./your-script & sleep 5; done
Это запустит ваш скрипт в качестве фонового задания, спящий на 5 секунд, затем снова запустится.
Вы можете использовать Ctrl-C, чтобы прервать его, или использовать любое другое условие вместо true
, например. ! test -f /tmp/stop-my-script
только для цикла, в то время как файл /tmp/stop-my-script
не существует.
Вы можете использовать пакет GNU mcron , альтернативу «Vixie cron».
«Можно легко разрешить задавать более тонкие временные точки, т. е. секунды. В принципе это может быть увеличено до микросекунд, но это не реализовано».
Минимальная конфигурация в cron - минуты, вы не можете установить ее в течение 5 секунд. Вы можете использовать кварц, который позволяет секунд. Ссылка
Используйте cacti для мониторинга маршрутизатора и коммутатора, но Cron разрешает использовать как минимум одну минуту, поэтому если один порт / устройство выключен, предупреждение не появится до двух минут.
Я делал это очень успешно (и конечный результат запускает недели за раз, пока машина не перезагружена). Что касается того, что я делал прямо сейчас, обновляя информацию и помещая ее в кеш - обновляя каждые 10 секунд.
#!/bin/sh
SLEEP=5
# do stuff
sleep $SLEEP
# do stuff
sleep $SLEEP
# do stuff
sleep $SLEEP
# do stuff
sleep $SLEEP
# echo and restart...
exec $0
«exec $ 0» перезапускает скрипт, но заменяет исполняемый скрипт. Его можно начать с линии crontab @reboot.