Estoy escribiendo una aplicación daemon simple usando C/C++ y quiero que se inicie cuando se inicie Linux.
He intentado modificar /etc/init.d/skeleton para agregar un script en el directorio init.d de la siguiente manera
-
agregué mi aplicación daemon en
/usr/sbin/directorio y cambióNAME=myDaemon -
escribe
update-rc.d myDaemon defaulten Terminal -
y agregó enlaces simbólicos a
rc#.ddirectorios
Pero no funcionó.
Mi segundo intento fue modificar rc.local como
/usr/sbin/myDaemon start
Pero esto tampoco funcionó.
¿Cómo puedo hacer que mi daemon comience con el sistema operativo? Quiero hacer todo programáticamente.
Uso Ubuntu 10.10, pero si existe una solución general para todas las distribuciones, ¡sería genial!
Respuesta aceptada:
No modificas el /etc/init.d/skeleton expediente. Tu copias a un nuevo archivo /etc/init.d/mamoudservice (reemplace mamoudservice con un nombre más adecuado) y luego editar ese nuevo archivo apropiadamente.
Luego agrega un enlace simbólico desde /etc/rc2.d/S99mamoudservice a /etc/init.d/mamoudservice etc.
Usar, por ejemplo,
/bin/bash -vx /etc/init.d/mamoudservice start
para entender cómo el bash shell está interpretando su script.
Si su programa daemon /usr/sbin/mamouddaemon está codificado en C o en C++, sugiero usar openlog y syslog adentro, al menos para obtener mensajes de depuración (no enviar a stderr o stdout en un demonio, no podría ir a ninguna parte).
Una alternativa a tener su /etc/init.d/mamoudservice script podría ser poner un @reboot entrada en su crontab