В RHEL существует два места, куда эти дела должны, вероятно, идти.
Для добавления статических маршрутов в RHEL Вы добавляете их к/etc/sysconfig/network-scripts/route-INTERFACE, где ИНТЕРФЕЙС соответствует названию IFCFG-ИНТЕРФЕЙСНЫХ записей. Операторы в маршруте -* файлы будут переданы ip route add
и ip route del
когда интерфейс поднят или вниз.
Теперь, для ip rule
команды, лучшее место, о котором я могу думать, вероятно, были бы в /sbin/ifup-local
. Если этот файл существует, за ним бегут, интерфейс поднят. Одно примечание с этим, если /sbin/ifup-local
существует, это назовут как исполняемый файл и передало аргумент имени интерфейса. Таким образом, необходимо будет написать код обработчика, чтобы проверить, что аргумент против интерфейсов Вы хотите добавить конфигурации для и затем принять соответствующие меры.
Как пример:
#/bin/bash case $1 in eth0) /sbin/ip rule foo /sbin/ip rule bar ;; eth1) /sbin/ip rule baz /sbin/ip rule quux ;; *) /usr/bin/logger -t 'ifup-local' 'Called with unknown interface: $1' ;; esac
Если бы Вы хотели, то Вы могли бы включать IP правила маршрута для каждого интерфейса в ifup-local
, также. Если бы Вы хотели удалить соответствующие правила, когда интерфейс побежден, Вы могли создать подобное /sbin/ifdown-local
сценарий для обработки этого.
Если бы это был я, даже при том, что RHEL предоставляет стандартизованный способ обработки статических маршрутов, я, вероятно, выполнил бы во всем ifup-local
и ifdown-local
, только держать все мои интерфейсные определенные биты вместе.
Hrm при использовании Ubuntu, их нового процесса init, выскочки, включает уровень контроля процессом. Это может использоваться для Вашего стандартного запуска и остановки сервисов, а-ля сценарии SysV init, и это может также контролировать запущенные приложения и повторно породить их, если они умирают.
Можно также реализовать процесс бедного человека restarter через inittab, в зависимости от того, каковы потребности.
При основном поиске чего-то, чтобы следить за процессом, удостовериться, что он всегда работает, и затем перезапустите его, когда это не, у меня была большая удача с restartd. К сожалению, единственный источник для него, что я знаю о, является пакетом Debian. Однако это - очень небольшое и простое приложение, в основном просто единственный.c и.h файл, с make-файлом. Компиляция его из источника Debian tarball на Red Hat тривиальна (я даже сделал об/мин из него в моем предыдущем задании).
Заключительная опция я услышал о, но не использовал, Супервизор. Это похоже на многообещающий инструмент, но restartd работал достаточно хорошо на меня в прошлом для того, в чем я нуждался, который я еще не потрудился играть с ним.
+1 для runit. Больше функций и гибкий, чем daemontools, совместимый с существующими daemontools аргументами и опциями. Крутой.
Но поскольку Вы упомянули, что много инструментов идет с их собственными двоичными файлами управления, apache2ctl, ejabberdctl, poundctl, collectd, и т.д. И хотя взломы существуют, иногда его просто лучше для придерживаний предоставленных инструментов, главным образом когда Вы не уверены в самой чистой реализации. Я обычно делаю компромисс и имею большинство сервисов, выполненных при контроле runit. И другим можно разрешить выполнить использование тривиального пути.
Ну, существует runit. Я не могу сказать Вам, каковы ее сходства и различия с daemontools, но оценка по веб-сайту Berstein-esque, я сказал бы, что существует определенное влияние Bernstein.
Fedora кажется готовым переключиться на systemd: http://0pointer.de/blog/projects/systemd.html
Ubuntu идет с Выскочкой - я не знаю много об этом, но я знаю, что это действительно имеет возможности "супервизора". launchd Apple является другой опцией (что статья Wikipedia имеет хорошее, "видят также" раздел, который перечисляет набор других также, включая Upstart & RunIt).
У всех них есть их положительные стороны и их собственный специальный бренд übersuck - Каждый раз, когда кто-то спрашивает меня о "супервизоре процесса" / "сторожевые" программы, я всегда задаю тот же вопрос: Почему Вам нужен тот?
Нет никаких popular/community-consensus инструментов для этого, потому что все, кто идет по этой дороге, понимают, что это - тупик. Если Ваши длительные процессы перестали работать слишком часто, чтобы простой контроль был достаточно хорош, то прекратите использовать их и переместите свой код в чем-то, что будет более управляемо событиями.
править: как Chris указывает ниже иногда, Вы полностью загнаны в угол, в этом случае */1 задание крона, которое ищет process/pidfile, выполняет запущение/перезапущение, если его отсутствие, и производит результаты в электронном письме ответственному разработчику/менеджеру по продукции, Ваше положение нейтрализации.
В качестве альтернативы уже упомянутым daemonize
и daemontools
существует команда демона пакета libslack.
демон
достаточно настраиваемый и заботится обо всех утомительных вещах демона, таких как автоматический перезапуск, ведение журнала или обработка pidfile.