init.d - старая устаревшая система для запуска демонов; это было вытеснено выскочкой . Преимущество Upstart заключается в том, что его гораздо проще настроить и обеспечивает правильную последовательность инициализации задач.
Конфигурационные файлы для upstart находятся в / etc / init, и, если у вашего демона нет предварительных требований, это может быть так просто, как tty1.conf:
# tty1 - getty
#
# This service maintains a getty on tty1 from the point the system is
# started until it is shut down again.
start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]
respawn
exec /sbin/getty -8 38400 tty1
в этом случае вы можете скопировать этот файл и изменить по вкусу. Более сложные конфигурации лучше всего документировать на сайте upstart и в других записях в / etc / init.
добавлено в ответ на комментарий
Используете ли вы upstart или init.d, вам все равно понадобится какой-то способ определить, когда Firebird правильно инициализирован. К сожалению, у самого Firebird, похоже, нет хорошего способа убедиться, что он установлен и работает . Таким образом, рекомендация придерживаться запуска вашей программы в /etc/rc.local, безусловно, самая простая, и в Ubuntu - по крайней мере - гарантированно будет выполняться как можно позже в процессе загрузки.
если вы не хотите переходить на UPSTART, но хотите использовать классический подход, вы должны:
ПРИМЕЧАНИЕ: я сохраняю службу и программу с одним и тем же именем в разных каталогах (но вы можете изменить это, если это отражено в вашем файле службы). измените "myscriptname" и "myprogramname" на настоящие имена!
сохраните вашу программу, которая будет работать как сервис, в / usr / sbin
sudo cp myprogramname /usr/sbin/myscriptname
создайте базовый сценарий запуска (используйте /etc/init.d/skeleton в качестве ссылки)
переместите этот скрипт в /etc/init.d
sudo mv /etc/init.d/myscriptname
дать разрешение на выполнение этого скрипта (я использовал 775, но вы можете установить его ниже)
sudo chmod 755 /etc/init.d/myscriptname
Перейти к /etc/init.d
cd /etc/init.d
включить в список автозагрузки с низким приоритетом запуска
sudo update-rc.d myscriptname defaults 97 03
перезагрузите компьютер и проверьте, правильно ли запущен сервис
если ваша служба не запускается должным образом, вы должны сначала проверить, работает ли она при вызове вручную:
ниже я включаю пример файла службы, который на самом деле работает. сравните его со службой скелета, чтобы понять, что вам нужно настроить. ПРИМЕЧАНИЕ: это работает на Ubuntu 12.04 amazon cloud Классическая реализация AWS EC2 LAMP (также на Kubuntu 15.10).
источник
Сделайте копию /etc/init.d/skeleton и отредактируйте ее в соответствующих местах, чтобы запустить / остановить / перезапустить вашу службу. Он очень хорошо прокомментирован, поэтому вы сможете быстро создать работающий скрипт init.d.
источник
/etc/rc.local
источник
pleaserun
скрипт ruby, который пытается решить проблему автоматического создания скрипта инициализации с помощью одной команды цитата из его страницы:«С помощью pleaserun вы можете сгенерировать следующие средства запуска / скрипты / что угодно:
запустил
upstart
systemd
runit
sysv init "
Он также определяет, какая система инициализации используется, и соответственно генерирует скрипт.
источник