как использовать программное обеспечение linux watchdog

привет может кто-нибудь сказать мне, как обращаться с программным обеспечением watchdog в linux .У меня есть программа "SampleApplication", которая работает непрерывно, и мне нужно перезапустить ее, если она зависает или неожиданно закрывается.

я гуглил об этом и обнаружил, что у linux есть сторожевой пес в /dev/watchdog, но не знаю, как его использовать.Может кто-нибудь помочь мне с примером.

мой вопрос заключается в том, где указать имя приложения и интервал задержки для перезапуска . Так как я новичок в Linux, пожалуйста с образцом если возможный. Спасибо

9 ответов


большинство Unix / Linux init программы будут управлять демонами для вас и перезапустить их. Смотреть в размещении в /etc/inittab. Или вы можете использовать Upstart или systemd.

все эти программы работают как PID 1 и это их работа для мониторинга и перезапуска системных процессов.

из вашего тега Busybox я бы предположил, что вы используете встроенную систему. На них сценарии инициализации стиля System V со всеми их сценариями оболочки действительно излишни. Вы должны вероятно, вырвите все это и замените его записями в /etc/inittab или upstart или systemd в работу.


поскольку модераторы игнорируют пост-улучшения, теперь мне придется опубликовать его отдельно

программное обеспечение linux watchdog перезагрузит машину, а не просто перезапустить процесс.

Ну это просто не так, очень возможно перезапустить один или несколько процессов после сигналов сторожевого пса, что системы висят - вы даже можете прервать перезагрузку или сделать мягкую перезагрузку, можно настроить "тест" и "ремонт" - скрипты / двоичные файлы, которые делайте все, что хотите. Busybox-версия watchdog разделена до почти непригодного уровня ... я думаю, мир никогда не узнает, почему разработчики busybox решили отказаться от основных функций-на данный момент лучше всего вообще избегать busybox - > улучшения скорости почти отсутствуют, уменьшение размера не компенсирует огромную потерю функциональности. /bin/bash довольно мал-перекомпилируйте все с флагом "- Os", если размер имеет значение, и вам хорошо идти - an из коробки сторожевой пес, который позволяет почти все, что можно было бы пожелать.

О, И, пожалуйста, не создавайте своего собственного сторожевого пса - это, скорее всего, оставит вас с необработанными ошибками и сделает вашу жизнь плохой в один прекрасный день.


Как использовать cron? Создать небольшое задание, которое выполняется каждую минуту. Проверьте, работает ли ваше приложение (с помощью ps), А если нет, перезапустите его.

сделайте крошечный скрипт следующим образом:

#!/bin/bash
if [ ! "$(pidof myapp)" ] 
then
  /path/to/myapp &
fi

вы проверяете, находится ли" myapp " в списке процессов. "!- отменяет тест. Если его там нет, он запускает "myapp". "&"просто так начинается на заднем плане.

добавить в cron. В зависимости от вашей системы и настроек есть несколько способов сделать это. Классическое одно к использовать crontab. Существует много документации о том, как указать строку crontab, но вы, вероятно, хотите что-то вроде этого:

* * * * * /path/to/the/script.sh > /dev/null

это будет запускать ваш тест каждую минуту каждого часа каждого... вы получите идею.


использовать /etc/inittab вы можете использовать его для запуска на определенных уровнях запуска, и если он будет убит, он будет перезапущен автоматически

n:2345:respawn:/path/to/app

это сделает его respawn в уровнях запуска 2345 вам, вероятно, нужно только 3 и 5, но это будет работать нормально и встроено в Linux.


документация для сторожевого пса здесь:http://linux.die.net/man/8/watchdog

но, похоже, это не то, что вы хотите. Программное обеспечение linux watchdog перезагрузит машину, а не просто перезапустить процесс.

вы можете легко сделать свой собственный Барбос. Например, программа может периодически записывать временный файл и запускать сценарий, который время от времени проверяет файл и перезапускает процесс, если он не обновлялся в течение некоторого времени время.


Если вы используете systemd, есть 2 сторожевых пса: один для оборудования (используя systemd.conf или использование демона watchdog) и один для демонов, инициализированных как службы. Если systemd-ваш вариант, посмотрите на следующее: http://0pointer.de/blog/projects/watchdog.html


Если кто-то прибыл на эту страницу в поисках сторожевой собаки операционной системы (которая не является непосредственно то, что OP хотел), это то, что вам нужно:

sudo apt-get install watchdog
service watchdog status
service watchdog start 

чтобы проверить, что он работает, выполните:

tail -f /var/log/syslog | grep watchdog

вы должны увидеть что-то вроде:

Jul 25 22:03:35 nuc watchdog[14229]: still alive after 733 interval(s)
Jul 25 22:03:36 nuc watchdog[14229]: still alive after 734 interval(s)
Jul 25 22:03:36 nuc watchdog[14229]: still alive after 735 interval(s)
Jul 25 22:03:37 nuc watchdog[14229]: still alive after 736 interval(s)
Jul 25 22:03:37 nuc watchdog[14229]: still alive after 737 interval(s)

надеюсь, я правильно отвечаю на вопрос. Все остальные ответы кажутся очень разными.


вы можете попробовать wdog, который является утилитой, написанной на c++ и связывающей с kahless_9 framework. Исходный код для этого можно скачать с: https://github.com/zepher999/wdog и, следовательно, обновляется для удовлетворения ваших собственных потребностей. Есть еще некоторые изменения списка задач, необходимые для будущего, но как это должно удовлетворить ваши текущие требования.

утилита требует csv-файл в качестве входных данных, где все процессы, которые будут наблюдаться с их аргументами заключенный. При запуске утилита запускает все эти процессы, указанные в csv-файле, и отслеживает их для выхода / завершения, после чего перезапускает процесс.

В настоящее время wdog позволяет останавливать/убивать отслеживаемые процессы, а также возможность запуска утилиты в горячем или холодном режиме. Горячий режим позволяет утилите использовать кэшированные записи для мониторинга уже запущенных процессов, в то время как холодный режим сбрасывает такие кэшированные значения, пытаясь запустить все процессы.

утилита также имеет возможность запускать экземпляр самого себя для мониторинга себя, тем самым имея сторожевого пса для сторожевого пса.


вы можете использовать утилиту "Monit" для перезапуска и мониторинга ваших услуг. Просто установите, выдав команду "apt-get install monit".