Em uma nova instalação do OpenSuse 12.3, quero "daemonizar" um programa. E, em todos os exemplos encontrados na Internet, vejo que tenho que criar primeiro um /etc/init.d/myscript
baseado no /etc/init.d/skeleton
...
Mas não tenho /etc/init.d/skeleton
... Existe outro lugar para esse arquivo? Ou talvez eu precise instalar alguma coisa?
O sistema está atualizado, verifiquei isso primeiro.
Eu sei que posso tentar copiar outro /etc/init.d
script existente e modificá-lo, ou criar um novo, mas saberia se estou fazendo algo errado ou se existe outra maneira especial de fazer isso no OpenSuse.
Responder1
Não tenho certeza de onde o /etc/init.d/skeleton
arquivo desapareceu, mas espero que essa mudança esteja relacionada à substituição do tradicional SysV init daemon
desde systemd
o OpenSUSE 12. systemd
é totalmente compatível com initscripts bem conhecidos, mas eu preferiria usar o systemd
modelo de inicialização de serviços.
Na minha opinião, os initscripts tradicionais podem ser complicados e, às vezes, podem exigir um conhecimento mais profundo de scripts de shell. Por outro lado, systemd
"initscript" ou unit
arquivo de configuração de um serviço ( man systemd.unit
) é mais fácil de manter, pois possui sintaxe simples, semelhante a .INI
arquivos. Você pode tentar escrever algum arquivo de unidade e habilitá-lo soltando o arquivo no /etc/systemd/system
diretório. Este diretório tem precedência mais alta que o diretório padrão /usr/lib/systemd/system
. Segue um exemplo de sshd
unidade 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
Ou você pode ficar com os scripts "legados" à medida que são usados. Mas você perderá alguns recursos interessantes systemd
como:
- tempo de inicialização mais rápido, inicialização paralela real de serviços
- tratamento automático de dependências
- monitoramento de serviços e reinicialização automática dos serviços travados
- e muito mais
Por fim, lembre-se de que se houver uma unidade ( sshd.service
) com o mesmo nome base de um script de inicialização ( /etc/init.d/sshd
), o script de inicialização será ignorado e a systemd
unidade será preferida e usada.