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

Как демонизировать серверы в Ubuntu?

У меня есть пара серверов на моем 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 - о, старый вопрос, который снова появился на активной вкладке по какой-то причине ...