Как я автоматически перезапускаю процесс на выходе перезагрузки/процесса сервера?

Если al еще перестал работать, можно всегда компилировать из источника. Я сделал это прежде на CentOS, и это на самом деле работает вполне гладко.

5
задан 26 July 2009 в 00:20
4 ответа

Несколько опций здесь. Просто пропустите к последнему абзацу, если Вы хотите одну рекомендацию вместо того, чтобы читать о других также!

Просто перезапуск на перезагрузке легок: добавьте его к /etc/rc.local который Debian основывал дистрибутивы (и многие другие) бежит за всем в других сценариях запуска по умолчанию. Если god не заскакивает в сам фон, Вам, возможно, понадобилось бы к вниманию и к ned команды как так:

god -c config &

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

Вы могли также создать свой собственный init сценарий, смоделированный на тех, которые в /etc/init.d (и связанный в /etc/rc.*'который даст Вам больше полного решения, поскольку у Вас будет средство для останавливаний/начинания сервиса, когда Вы должны будете, хотя это автоматически не запустит сервис для Вас без некоторых дополнительных сценариев с Вашей стороны.

Вы могли добавить его к Вашему /etc/inittab, затем init справится с процессом для Вас, запуская его на начальной загрузке и перезапуская его, если это умрет. Это даже прекратит перезапускать его, если это будет умирать к часто за короткий промежуток времени. Это все еще не прекрасно все же.

Я думаю обычно рекомендуемый подход для того, что Вы описали, daemontools (http://en.wikipedia.org/wiki/Daemontools), который также поддерживает перезапуск сервиса, если он умирает. Это - немного больше работы здесь, чем использование записи в /etc/initab но Вы закончите с намного более чистым конечным продуктом, который должен сделать все, что Вы спросили в своем вопросе. daemontools должен быть найден в репозиториях примерно любого дистрибутива Linux.

8
ответ дан 3 December 2019 в 01:05
  • 1
    +1 для daemontools. –  David 26 July 2009 в 15:00
  • 2
    Спасибо David, I' ll, вероятно, идут с inittab. Я haven' t используют inittab прежде, но это, кажется, лучшее решение на данный момент. Я в конечном счете дам Daemontools попытку. –  Simone Carletti 27 July 2009 в 10:26
  • 3
    Персональный preferation: инструмент, названный monit, ее доступным на большинстве главных дистрибутивов и домашней страницы здесь: mmonit.com/monit –  rasjani 29 July 2009 в 12:39
  • 4
    David - " Вы могли записать сценарию бесконечные циклы, но это грязно и вызовет проблемы, когда Вы действительно хотите его killed" - Это может обойтись путем помещения всех демонов сервера в их собственный runlevel и просто переключения runlevels в / запустить остановку с соответствующего/etc/init.d/... сценарии. Хотя это могло стать проблематичным, если Вы только хотите запустить/остановить определенного демона. Nevermind... –  J. Polfer 11 August 2009 в 23:59

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

Если у Вас есть корневой доступ, затем создают init сценарий в/etc/init.d и затем используют обновление-rc.d для создания корректных символьных ссылок в каталогах уровня выполнения. Сценарий в качестве примера был бы похож

 #!/bin/bash
 ### BEGIN INIT INFO
 # Provides:          god
 # Required-Start:    $syslog
 # Required-Stop:     $syslog
 # Default-Start:     2 3 4 5
 # Default-Stop:      0 1 6
 # Short-Description: Runs the ruby god meta server.
 # Description:       Runs the ruby god meta server.
 ### END INIT INFO

 start_daemon () {

        nohup start-stop-daemon --start --quiet -m --pidfile /var/run/god.pid \
        --exec  god -- -c config 
        RETVAL=$?
 }

 stop_daemon () {
    start-stop-daemon --stop --quiet --oknodo -m --pidfile /var/run/god.pid 
    RETVAL=$?
 }


 case "$1" in 

 start)
 start_daemon
 ;;
 stop)
 stop_daemon
 ;;
 restart | reload | force-reload )
 stop_daemon
 start_daemon
 ;;
 esac

Если Вы - просто обычный пользователь затем, Вы могли бы использовать крон для выполнения процессов во время начальной загрузки specifing время начала как @reboot

@reboot god -c config
3
ответ дан 3 December 2019 в 01:05
  • 1
    +1 для @reboot. Я изучаю что-то новое каждый день! –  David Spillett 26 July 2009 в 03:34
  • 2
    Спасибо за этот персонализированный сценарий. It' s полезный для запущения/останавливания бога в строке, всегда не указывая опции и настройки. –  Simone Carletti 27 July 2009 в 10:27

Необходимо записать init.d сценарий для него, чтобы запустить и остановить бога. Можно использовать любой сценарий под/etc/init.d как пример. Назовите свой новый сценарий/etc/init.d/god. Можно затем работать

# update-rc.d god defaults

и это должно удостовериться, что запускается и останавливается при начальной загрузке сервера и завершении работы. Можно найти, что уже существует init.d сценарий для бога, доступного в Интернете. У меня был бы быстрый поиск перед присаживанием для записи того.

1
ответ дан 3 December 2019 в 01:05

Гарантировать богу перезапускает его на начальной загрузке, Вы захотите добавить его к init сценариям.. Чтобы сделать это, запишите сценарий, который примет, по крайней мере, запускаются в качестве параметра (для следования стандартам, необходимо было бы сделать несколько больше, чем тот), и засуньте его в/etc/init.d/. Затем добавьте символьную ссылку по имени S99 к/etc/rc [безотносительно уровней выполнения, которые Вы хотите, чтобы сценарий запустил в].

Идеально, для лучше следования стандартам скопируйте/etc/init.d/skeleton в где-то в другом месте в/etc/init.d/и отредактируйте его для установки.

0
ответ дан 3 December 2019 в 01:05

Теги

Похожие вопросы