На свежей установке OpenSuse 12.3 я хочу "демонизировать" программу. И, судя по всем примерам, найденным в Интернете, я вижу, что мне нужно сначала создать /etc/init.d/myscript
.../etc/init.d/skeleton
Но у меня нет /etc/init.d/skeleton
... Есть ли другое место для этого файла? Или, может быть, мне нужно что-то установить?
Система обновлена, я проверил это в первую очередь.
Я знаю, что могу попробовать скопировать другой существующий /etc/init.d
скрипт и изменить его или создать новый, но мне бы хотелось знать, делаю ли я что-то неправильно или есть ли другой особый способ сделать это в OpenSuse.
решение1
Я не уверен, куда /etc/init.d/skeleton
исчез файл, но предполагаю, что это изменение связано с заменой традиционного SysV init daemon
на , systemd
поскольку OpenSUSE 12 systemd
полностью совместим с известными initscripts, но я бы предпочел использовать systemd
модель запуска служб.
По моему мнению, традиционные initscripts могут быть сложными и иногда могут требовать более глубоких знаний в области сценариев оболочки. С другой стороны, systemd
"initscript" или unit
файл конфигурации для службы ( man systemd.unit
) легче поддерживать, поскольку он имеет простой синтаксис, похожий на синтаксис .INI
файлов. Вы можете попробовать написать какой-нибудь файл модуля и включить его, перетащив файл в /etc/systemd/system
каталог. Этот каталог имеет более высокий приоритет, чем каталог по умолчанию /usr/lib/systemd/system
. Ниже приведен пример sshd
модуля daemon:
[Unit]
Description=OpenSSH Daemon
After=syslog.target network.target
[Service]
EnvironmentFile=/etc/sysconfig/ssh
ExecStartPre=/usr/sbin/sshd-gen-keys-start
ExecStart=/usr/sbin/sshd -D $SSHD_OPTS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=always
[Install]
WantedBy=multi-user.target
Или вы можете придерживаться "устаревших" initscripts, которые вы используете. Но вы потеряете некоторые приятные функции, такие systemd
как:
- более быстрая загрузка, реальный параллельный запуск служб
- автоматическая обработка зависимостей
- мониторинг сервисов и их автоматический перезапуск в случае сбоя
- и многое другое
Наконец, имейте в виду, что если есть модуль ( sshd.service
) с тем же базовым именем, что и у initscript ( /etc/init.d/sshd
), то initscript игнорируется, а systemd
модуль будет иметь приоритет и использоваться.