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 default
en Terminal -
y agregó enlaces simbólicos a
rc#.d
directorios
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