На этот вопрос уже есть ответ:
Я хочу создать простой файл init.d, который позволит мне сбросить пробную службу, которую я использую. В настоящее время я использую CodeSys, и сценарий запуска отключает меня через 2 часа, поэтому мне нужно либо перезагрузить компьютер, либо вручную перезапустить службу.
Может ли кто-нибудь помочь мне создать сценарий, который:
service stop codesys
service start codesys
(каждые 7200 секунд в бесконечном цикле)
Заранее спасибо!
РЕДАКТИРОВАТЬ: Вот сценарий запуска, который был изначально включен, вы найдете что-нибудь, связанное с двухчасовым таймером? Я действительно мало что знаю об этом.
Самый простой путь состоит в том, чтобы просто работать однажды:
sudo service start codesys && watch -n 7200 'sudo service stop codesys && sudo service start codesys'
Это выполнит команду sudo service stop codesys && sudo service start codesys
(который останавливается codesys
сервис и на успехе впоследствии запускает его снова), каждый 7200
секунды отображая потенциальный вывод.
Заметьте, что в этом случае, так как команда, которая будет выполняться, является на самом деле цепочкой двух команд, кавычки для включения команды требуются.
Вот царапанье соответствующих разделов для watch
от man watch (trusty)
:
[...] DESCRIPTION watch runs command repeatedly, displaying its output and errors (the first screenfull). This allows you to watch the program output change over time. By default, the program is run every 2 seconds. By default, watch will run until interrupted. OPTIONS [...] -n, --interval seconds Specify update interval. The command will not allow quicker than 0.1 second interval, in which the smaller values are converted. [...]
Чтобы заставить его работать при запуске, добавьте эту строку к /etc/rc.local
перед строкой exit 0
:
nohup sh -c "sudo service start codesys && watch -n 7200 \"sudo service stop codesys && sudo service start codesys\"" > /dev/null &
nohup
запускает процесс, неуязвимый для SIGHUP
сигналы, перенаправляет процесс stdin
кому: /dev/null
и оба stdout
и stderr
к a nohup.out
файл, в этом случае stdout
и stderr
перенаправляются к /dev/null
так как Вы не должны проверять вывод. Использовать nohup
сделан так, чтобы процесс не был уничтожен когда выполнение /etc/rc.local
завершается. &
оператор помещает процесс в фоновом режиме, так, чтобы выполнение /etc/rc.local
может продолжиться.