Название говорит само за себя:
Как я могу бесконечно запускать какую-то команду каждые 30 секунд в фоновом режиме на CentOS? То есть: я хочу иметь возможность делать другие вещи, пока периодически вызывается какой-то другой скрипт.
Название говорит само за себя:
Как я могу бесконечно запускать какую-то команду каждые 30 секунд в фоновом режиме на CentOS? То есть: я хочу иметь возможность делать другие вещи, пока периодически вызывается какой-то другой скрипт.
По умолчанию cron не может планировать запуск заданий в секундах. Максимум, что вы можете сделать, это запускать его каждую минуту.
1) запустить его с помощью одного cron
Чтобы запустить его с помощью cron, каждые 30 секунд вы можете создавать одну запись cron следующим образом:
* * * * * /bin/bash -l -c "/path/to/script.sh; sleep 30 ; /path/to/script.sh"
2) запустить его с помощью часов
Запустите скрипт с помощью часов ((вы можете запустить его с экрана или tmux) или даже в фоновом режиме)
watch --interval 30 /path/to/script.sh
3) используйте цикл while следующим образом:
#!/bin/env bash
while [ true ]; do
sleep 30
/path/to/script.sh
done
Имейте в виду, что этот вариант не является отказоустойчивым, поскольку все зависит от того, что именно делает ваш cron и сколько времени требуется для завершения задания, выполняемого cron. В приведенном выше примере (3), если cron запускается 25 секунд, ваш скрипт будет задержан и так далее. То же самое относится и к варианту (1)
4) используя cron, альтернативный стандартному linux cron (используйте fcron)
5) Подобные вопросы уже задавались на SO, поэтому вы можете взглянуть на это: Как запускать Cronjobs чаще, чем раз в минуту?
sleep 30
перед основной задачей? - person sauerburger   schedule 10.10.2017