Eu preciso criar um daemon a partir do aplicativo no Debian. Existe alguma ferramenta padrão para isso no Debian como "upstart" no Ubuntu? Eu preciso apenas de comandos start-stop, para iniciar um programa como um daemon com algumas opções e um arquivo pid e matá-lo com o arquivo pid.
Eu olhei para init.d, mas parece que estes são para o lançamento no momento da inicialização. Quero iniciar meu daemon manualmente.
debian
daemon
debian-lenny
upstart
Kuroki Kaze
fonte
fonte
Respostas:
Você pode criar seu daemon manualmente seguindo o
/etc/init.d/skeleton
arquivo no Debian.Você pode usar
/usr/bin/service
para iniciar$ sudo service yourdaemon start
e interromper$ sudo service yourdaemon stop
seu daemon.Contanto que você não vincule seu script a nenhum dos
/etc/rc?.d
diretórios, ele não será iniciado na inicialização.Por outro lado, você pode querer olhar para daemontools , que não é padrão no debian, mas possui alguns recursos interessantes.
fonte
/usr/bin/service
no meu sistema (é o Debian Lenny), mas posso iniciar scripts diretamente com/etc/init.d/myservice start
.sudo invoke-rc.d yourservice start
bemO Debian (e Ubuntu) tem o programa auxiliar
start-stop-daemon
que é usado nos scripts init. Ele tem algumas opções para iniciar e rastrear daemons. Você pode simplesmente escrever um invólucro em torno dele, por exemplofonte
Para daemonizar adequadamente um processo para o Debian, você precisará executar várias etapas, incluindo desviar-se do processo de controle, redefinir a IO e criar um arquivo de identificação do processo para ser agradável. Em vez disso, você pode usar algo como o programa daemon do pacote com o mesmo nome para fazer isso por você. Se é isso que você queria fazer, a resposta pode ser encontrada aqui no StackOverflow: /programming/3095566/linux-daemonize
O comando upstart é mais parecido com o comando invoke-rc.d do Debian ou o comando service do pacote sysvinit-utils. Eles esperam trabalhar com scripts init em /etc/init.d. É padrão no Debian criar um desses para o seu pacote e usar o programa start-stop-daemon como você pode ver no exemplo /etc/init.d/skeleton.
Só porque você cria um script /etc/init.d/myservice não significa que ele precisa ser iniciado automaticamente. Você pode ajustar os níveis de execução nos quais para e inicia automaticamente usando uma ferramenta como update-rc.d. Isso é descrito em mais detalhes em Desativar a inicialização de um serviço em todos os níveis de execução?
fonte