У меня есть пара серверов на моем Ubuntu, которые нужно демонтировать с защитой от перезапуска. Как я могу сделать это с помощью обычного процесса init first? Поменяться на выскочку или другую замену?
Если ваши программы работают на переднем плане, я предлагаю Запустить его, который является заменой ранее упомянутого DAEMON Tools, а также является заменой для init в стиле Sys-V. В Ubuntu Runit доступен как пакет и содержит необходимые сценарии, которые должны запускаться Upstart при загрузке системы.
Мы используем Runit для всех пакетов, не установленных системой, таких как приложения Rails, поэтому нам не нужно управлять сценариями инициализации; мы просто вставляем команду запуска в соответствующий сценарий «run» и отпускаем. Это упрощает развертывание произвольных новых программ, которые необходимо запускать во время загрузки, и является очень устойчивой и надежной системой, избавляющей от необходимости управлять PID и файлами блокировки, поскольку это выполняет Runit.
Существующий SysInit система справится с этим за вас прекрасно. У Ubuntu есть документы о том, что они с ними делают. Да, они переходят на выскочка.
DAEMON Tools абсолютно круто для такого рода вещей. Уровень KISS прост, надежен и поощряет передовой опыт в смежных областях (ведение журнала и т. Д.).
Для этого можно использовать xinetd, если процесс основан на сети. В противном случае выскочка и sysvinit - ваши инструменты.
daemonize: www.clapper.org/software/daemonize/ может справиться с этим, заключив ваш код в оболочку C, которая демонизирует перед выполнением.
Вы также можете просто добавить их в / etc / inittab. Многие (возможно, справедливо) скажут, что это зло, потому что никто не подумает смотреть туда. Я видел производственные системы, в которых используется этот метод, и правда в том, что он работает хорошо.
Возможно, вы могли бы также изучить monit, он может убедиться, что процессы запущены, и при необходимости перезапустить их. Однако он был построен с учетом среды Linux-HA.
Обычно я вручную создаю новый сценарий инициализации для каждого нового процесса, но обычно я не развертываю сразу 4 или 5 сценариев, как это. Возможно, подумайте о том, как они структурированы, и поместите их в один сценарий инициализации, который является службой, которую они предоставляют.
«@reboot» - допустимый макрос в демоне cron Ubuntu по умолчанию (vixie-cron 4.x, если я правильно помню). Таким образом, запуск демона может быть таким же простым, как
crontab -e
@reboot /usr/local/bin/daemon
Это заставит вашего демона активироваться после перезагрузки, но при этом предполагается, что ваш демон не умирает сам по себе. Вы также можете использовать «keep-one-running», который, я думаю, будет пакетом по умолчанию, включенным с 11.10 («@reboot / usr / bin / keep-one-running / usr / local / bin / daemon» ).
edit - о, старый вопрос, который снова появился на активной вкладке по какой-то причине ...