Автоматичний перезапуск демона, на пам'ять, snussi s home in the web space

Поки перевіряється файлова система на моєму сервері, я вирішив написати коротку замітку про те, як автоматично перезапускати демон на під лінуксом.

Метод вкрай сокирний, але працює.

  • Максимальний час простою - 1 хвилина. Тобто в гіршому випадку, демон буде завислий / відключений / etc протягом хвилини.
  • Ви повинні знати команду, яка в разі роботи демона поверне який-небудь рядок, а якщо потрібен перезапуск - не поверне.

Я використовую цей метод для автоматичного перезапуску відвалюється winbind 'а й що минає в астрал 1С сервера під Linux.

Важливе зауваження! Перш ніж використовувати цей сокирний або якийсь інший прекрасний метод перезапуску демона, спробуйте зробити так, щоб перезапуску не було потрібно взагалі (це я для випадку, коли демона вибиває) - почитайте логи, погуглити і вирішите проблему в корені.

З теорією все, займемося практикою.

Метод, який я використовую, полягає в щохвилинну запуску скрипта, який перевіряє наявність демона і, якщо його немає, перезапускає службу.

Створюємо файл /usr/local/sbin/mydaemon.check (для winbind):

/ Usr / bin / wbinfo -u | grep -q v.shokov || /etc/init.d/winbind restart> / dev / null

Тут команда / usr / bin / wbinfo -u | grep -q v.shokov запитує в домені всіх користувачів, перевіряє - чи є там користувач v.shokov (вважаємо, що він є завжди) і, якщо повертається порожній рядок, то winbind перезапускается.

Можна зробити перевірку на існування процесу - / bin / ps -A | grep -q winbind або, наприклад, статус служби - /etc/init.d/winbind status | grep -q winbindd.

Важливо лише, щоб команда якомога менше грузила систему і, якщо служба потребує перезапуску, - повертала порожній рядок, а якщо не потребує - то повертала хоч щось.

Тепер додаємо завдання в / etc / crontab

І перезапускаємо cron. Власне, все.