как использовать программное обеспечение Linux watchdog
Привет, кто-нибудь может сказать мне, как обращаться с программным обеспечением watchdog в linux .У меня есть программа "SampleApplication", которая работает непрерывно, и мне нужно перезапустить ее, если она зависает или неожиданно закрывается.
Я погуглил об этом и обнаружил, что linux имеет watchdog в /dev/watchdog, но не знаю, как его использовать.Не мог бы кто-нибудь помочь мне с примером.
Мой вопрос заключается в том, где я могу указать свое имя приложения и интервал задержки для перезапуска. Поскольку я новичок в linux, пожалуйста, кратко опишите меня с образцом, если возможный. Спасибо
9 ответов:
Большинство программ Unix/Linux
initбудут управлять демонами для вас и перезапускать их. Рассмотрите возможность размещения вашего сервиса в/etc/inittab. Или вы можете использоватьUpstartилиsystemd.Все эти программы работают как
PID 1, и их задачей является мониторинг и перезапуск системных процессов.Из вашего тега Busybox я бы предположил, что вы используете встроенную систему. На тех, система в стиле сценариев всех своих скриптов действительно перебор. Тебе, наверное, стоит все это вырвать и замените его записями в
/etc/inittabили заданиях upstart или systemd.
Поскольку модераторы игнорируют пост-улучшения, теперь мне придется опубликовать его отдельно
Программное обеспечение linux watchdog перезагрузит машину, а не просто перезагрузит ваш процесс.
Ну это просто не так, очень возможно перезапустить один или несколько процессов после того, как сторожевой пес сигнализирует, что системы зависли - вы можете даже прервать перезагрузку или сделать мягкую перезагрузку, можно настроить" тест "и"ремонт" -скрипты / двоичные файлы, которые делают все, что вы хотите их надо делать. Busybox-версия watchdog урезана до почти непригодного уровня ... я думаю, что мир никогда не узнает, почему разработчики busybox решили отказаться от основных функций-на данный момент было бы лучше вообще избегать busybox - > улучшения скорости почти отсутствуют, уменьшение размера не компенсирует огромную потерю функциональности. /bin / bash довольно мал - перекомпилируйте все с флагом "- Os", если размер имеет значение, и вы хорошо идете-out-of-the-box watchdog что позволяет получить практически все, что только можно пожелать.
О, И пожалуйста, не создавайте своего собственного сторожевого пса - это, скорее всего, оставит вас с необработанными ошибками и сделает вашу жизнь плохой в один прекрасный день.
Как насчет использования 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 или использование сторожевого демона) и один для демонов, инициализированных как службы. Если systemd является вашим вариантом, обратите внимание на следующее: http://0pointer.de/blog/projects/watchdog.html
Если кто-то пришел на эту страницу в поисках сторожевого пса операционной системы (который не является непосредственно тем, что хотел ОП), это то, что вам нужно:
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. Исходный код для этого можно загрузить с: https://github.com/zepher999/wdog и, следовательно, обновлен для удовлетворения ваших собственных потребностей. Есть еще некоторые изменения списка задач, необходимые для будущего, но как это должно удовлетворить ваши текущие требования.
Утилита требует csv-файл в качестве входных данных, в котором содержатся все процессы, которые будут наблюдаться с их аргументами. На при запуске утилита запускает все эти процессы, указанные в файле csv, и отслеживает их выход/завершение, после чего перезапускает процесс.
В настоящее время wdog позволяет останавливать/убивать отслеживаемые процессы, а также запускать утилиту в горячем или холодном режиме. Горячий режим позволяет утилите использовать кэшированные записи для мониторинга уже запущенных процессов, в то время как запуск холодного режима отбрасывает такие кэшированные значения, тем самым пытаясь запустить все процессы.
Утилита также имеет возможность запускать экземпляр самой себя для наблюдения за собой, тем самым имея сторожевого пса для сторожевого пса.
Вы можете использовать утилиту "Monit" для перезапуска и мониторинга ваших служб. Просто установите, выдав команду "apt-get install monit".
Comments