Как создать сценарий для перезапуска службы каждые два часа? [дубликат]

Я хочу создать простой файл init.d, который позволит мне сбросить пробную службу, которую я использую. В настоящее время я использую CodeSys, и сценарий запуска отключает меня через 2 часа, поэтому мне нужно либо перезагрузить компьютер, либо вручную перезапустить службу.

Может ли кто-нибудь помочь мне создать сценарий, который:

service stop codesys
service start codesys

(каждые 7200 секунд в бесконечном цикле)

Заранее спасибо!

РЕДАКТИРОВАТЬ: Вот сценарий запуска, который был изначально включен, вы найдете что-нибудь, связанное с двухчасовым таймером? Я действительно мало что знаю об этом.

http://pastebin.com/vzWi3FBN

0
задан 16 April 2015 в 09:58

1 ответ

Самый простой путь состоит в том, чтобы просто работать однажды:

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 может продолжиться.

4
ответ дан 16 April 2015 в 19:58

Другие вопросы по тегам:

Похожие вопросы: