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

Как установить двоичный файл для инициализации при загрузке, как это делает Apache (запускать как службу)

Я пытаюсь настроить PhantomJS для работы в качестве службы. Я нашел файл скелета в /etc/init.d, и я работаю на Ubuntu 12.10. Пытаясь понять это, я нашел символические ссылки в каталогах /etc/rc*.d и обнаружил, что Apache работает на уровнях выполнения со 2 по 5.

Мой вопрос: я только что создал символическую ссылку S02phantomjs в папках с 2 по 5 и указал ее на сценарий, который я поместил в /etc/init.d? Или мне следует использовать какое-нибудь приложение для настройки этого?

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

Также я не уверен, что мне нужно сделать что-нибудь еще, чтобы не только убедиться, что это запускается при каждой загрузке. Но пусть он запустится сейчас.

Последний вопрос. Мой сценарий, основанный на скелете, когда я запускаю его в терминале, он просто сидит и ждет, как когда я обычно запускаю PhantomJS. Я бы хотел, чтобы он просто работал в фоновом режиме, как это делает Apache. Что мне нужно сделать иначе, чтобы добиться этого?

Спасибо всем!

Если сценарий инициализации уже существует и правильно написан, его должно быть достаточно, чтобы включить его, как и любой другой сценарий инициализации:

update-rc.d phantomjs defaults

или (12.04+)

update-rc.d phantomjs enable

(Обычно это делается по умолчанию, когда вы устанавливаете пакеты с apt-get и его кузены ...)

Поскольку PhantomJS не будет поддерживать запуск демонов из коробки, вы должны сами позаботиться о своем сервисе. Здорово, что ты нашел /etc/init.d/skeleton и использовал его для создания сценария инициализации. То, что вы описываете, показывает, что ваш процесс не уходит в фоновый режим, и это можно исправить с помощью некоторой оболочки. Это может быть start-stop-daemon что характерно для дистрибутивов на основе Debian, или отдельный daemon пакет, который может перенаправлять stdin / stdout и обрабатывать дополнительные ситуации.

Поскольку я почти уверен, что вы используете традиционный способ написания сценария инициализации, я подозреваю, что вы можете просто добавить --background вашей команде start-stop-daemon.

Когда вы закончите исправлять свой скрипт, убедитесь, что он принадлежит root:root с разрешениями 0755 (например, rwxr-xr-x). После этого обновите символические ссылки sysvinit с update-rc.d команда предоставлена ​​Майклом Хэмптоном в его ответе.

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

Конечно, сценарии инициализации - это самый старый и наиболее поддерживаемый способ запуска демонов.