Necesito crear un demonio desde la aplicación en Debian. ¿Hay alguna herramienta estándar para esto en Debian como "advenedizo" en Ubuntu? Solo necesito los comandos start-stop, para iniciar un programa como demonio con algunas opciones y un archivo pid y matarlo con el archivo pid.
Miré init.d pero parece que estos son para el inicio del tiempo de arranque. Quiero iniciar mi demonio manualmente.
debian
daemon
debian-lenny
upstart
Kuroki Kaze
fuente
fuente

Respuestas:
Puede crear su demonio manualmente siguiendo el
/etc/init.d/skeletonarchivo en Debian.Puedes usar
/usr/bin/servicepara lanzar$ sudo service yourdaemon starty detener$ sudo service yourdaemon stoptu demonio.Mientras no vincule su script a ninguno de los
/etc/rc?.ddirectorios, no comenzará en el inicio.Por otro lado, es posible que desee ver Daemontools , que no es estándar en Debian pero tiene algunas características interesantes.
fuente
/usr/bin/serviceen mi sistema (es Debian Lenny), pero puedo iniciar scripts directamente con/etc/init.d/myservice start.sudo invoke-rc.d yourservice starttambiénDebian (y Ubuntu) tienen el programa auxiliar
start-stop-daemonque se usa en los scripts de inicio. Tiene bastantes opciones para iniciar y rastrear demonios. Simplemente puede escribir un envoltorio a su alrededor, por ejemplofuente
Para demonizar adecuadamente un proceso para Debian, necesitará tomar varios pasos, entre los que se encuentra el proceso de control, restablecer IO y crear un archivo de identificación de proceso para que funcione bien. En su lugar, puede usar algo como el programa daemon del paquete del mismo nombre para hacerlo por usted. Si eso es lo que quería hacer, la respuesta se puede encontrar aquí en StackOverflow: /programming/3095566/linux-daemonize
El comando upstart es más parecido al comando invoke-rc.d de Debian o al comando de servicio del paquete sysvinit-utils. Esperan trabajar con scripts de inicio en /etc/init.d. Es estándar en Debian crear uno de esos para su paquete y hacer que use el programa start-stop-daemon como puede ver en el ejemplo /etc/init.d/skeleton.
El hecho de que cree un script /etc/init.d/myservice no significa que deba iniciarse automáticamente. Puede ajustar los niveles de ejecución en los que se detiene y comienza automáticamente usando una herramienta como update-rc.d. Esto se describe con más detalle en ¿ Deshabilitar el inicio de un servicio en todos los niveles de ejecución?
fuente