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

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

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

service stop codesys
service start codesys

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

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

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

http://pastebin.com/vzWi3FBN

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):

[...]
ОПИСАНИЕ
       watch запускает команду несколько раз, отображая ее вывод и ошибки (первый экран). Это позволяет вам наблюдать за изменением вывода программы
       через некоторое время. По умолчанию программа запускается каждые 2 секунды. От
       по умолчанию, часы будут работать до тех пор, пока не будут прерваны.

ОПЦИИ
[...]
       , - интервал секунд
              Укажите интервал обновления. Команда не позволит быстрее
              чем 0,1 секундный интервал, в котором меньшие значения
              преобразованный.
[...]

Чтобы запустить его при запуске, добавьте эту строку в /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 к nohup.out файл, в этом случае stdout а также stderr перенаправлены на /dev/null так как вам не нужно проверять вывод. Использовать nohup сделано так, чтобы процесс не был убит при выполнении /etc/rc.local завершается. & Оператор помещает процесс в фоновом режиме, так что выполнение /etc/rc.local можно продолжить.

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