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/skeleton
archivo en Debian.Puedes usar
/usr/bin/service
para lanzar$ sudo service yourdaemon start
y detener$ sudo service yourdaemon stop
tu demonio.Mientras no vincule su script a ninguno de los
/etc/rc?.d
directorios, 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/service
en mi sistema (es Debian Lenny), pero puedo iniciar scripts directamente con/etc/init.d/myservice start
.sudo invoke-rc.d yourservice start
tambiénDebian (y Ubuntu) tienen el programa auxiliar
start-stop-daemon
que 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