Назад | Перейти на главную страницу

Альтернатива Daemontools (djbtools) для контроля процессов unix?

Я использовал DAEMON Tools чтобы предоставить простой и надежный способ контролировать службы Unix на моих серверах. Он работает хорошо, но требует другого мышления (Путь DJB) и некоторые общие жалобы:

Я помню, что несколько подобных демонов «супервизор / сторожевой пес» находились в разработке около двух лет назад, но некоторые все еще были немного грубоваты.

Если вы перешли с Daemontools на что-то другое, что вы выбрали и хорошо ли это сработало? Есть ли в RedHat или Ubuntu по умолчанию какие-либо служебные программы-супервизоры?

Хм, если вы используете Ubuntu, их новый процесс инициализации, выскочка, включает уровень надзора за процессом. Его можно использовать для стандартного запуска и остановки служб, как сценарии инициализации SysV, а также он может отслеживать запущенные приложения и воспроизводить их, если они умирают.

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

Если вы в первую очередь ищете что-то, чтобы следить за процессом, чтобы он всегда работал, а затем перезапускать его, когда это не так, мне очень повезло с перезапущен. К сожалению, единственный известный мне источник - это пакет Debian. Однако это очень маленькое и простое приложение, в основном состоящее из одного файла .c и .h с файлом make. Скомпилировать его из архива исходных кодов Debian в Red Hat - тривиально (на предыдущей работе я даже сделал для него RPM).

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

+1 за рунит. Больше функций и гибкость, чем у daemontools, совместимая с существующими аргументами и параметрами daemontools. Довольно аккуратно.

Но, как вы упомянули, многие инструменты поставляются со своими собственными управляющими двоичными файлами, apache2ctl, ejabberdctl, poundctl, collectd и т. Д. И хотя существуют хаки, иногда лучше придерживаться поставляемых инструментов, в основном, когда вы не уверены в самом чистом Возможная реализация. Обычно я иду на компромисс, и большинство служб работают под контролем runit. А остальным можно разрешить работать тривиальным образом.

Ну есть запустить его. Я не могу вам сказать, в чем его отличия и сходства с daemontools, но, судя по веб-сайту в стиле Берштейна, я бы сказал, что есть определенное влияние Бернштейна.

Fedora, похоже, готова перейти на systemd: http://0pointer.de/blog/projects/systemd.html

В качестве альтернативы уже упомянутому daemonize и daemontools, Здесь демон команда пакета libslack.

daemon довольно настраиваемый и заботится обо всех утомительных вещах демона, таких как автоматический перезапуск, ведение журнала или обработка pidfile.

Также есть libslack's демон инструмент, написанный на C и доступный для различных (Unix) платформ.

Он довольно настраиваемый и заботится обо всех утомительных вещах демона, таких как автоматический перезапуск, ведение журнала или обработка pidfile.

Ubuntu поставляется с Выскочка - Я мало о нем знаю, но знаю, что у него есть «супервизорские» возможности. Apple запуск - еще один вариант (в этой статье Википедии есть хороший раздел «см. также», в котором также перечислено множество других, включая Upstart и RunIt).

У всех из них есть свои достоинства и свой особый бренд übersuck. Всякий раз, когда меня спрашивают о программах «супервизора процесса» / «сторожевого пса», я всегда задаю один и тот же вопрос: зачем вам он нужен?

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

edit: как Крис указывает ниже, иногда вы полностью загнаны в угол, и в этом случае задание cron * / 1, которое ищет процесс / pidfile, запускает / перезапускает, если он отсутствует, и выводит результаты по электронной почте ответственному разработчик / менеджер по продукту - ваша резервная позиция.