Estoy escribiendo un script de shell que me gustaría ejecutar como demonio en el inicio sin usar herramientas externas como daemontools o daemonize .
COMO de Linux Daemon Writing
De acuerdo con el Linux Daemon Writing HOWTO , un demonio adecuado tiene las siguientes características:
- horquillas del proceso padre
- cierra todos los descriptores de archivos (es decir,
stdin,stdout,stderr) - abre registros para escribir (si está configurado)
- cambia el directorio de trabajo a uno que sea persistente (generalmente
/) - restablece la máscara de modo de archivo (umask)
- crea una ID de sesión (SID) única
daemonize Introducción
La Introducción daemonize va más allá, afirmando que un demonio típico también:
- se disocia de su terminal de control (si hay uno) e ignora todas las señales de terminal
- se disocia de su grupo de procesos
- manejas
SIGCLD
¿Cómo voy a hacer todo esto en una sh, dasho bashla escritura con sólo herramientas comunes de Linux?
El script debería poder ejecutarse en tantas distribuciones como sea posible sin software adicional, aunque Debian es nuestro enfoque principal.
NOTA: Sé que hay muchas respuestas en la red de StackExchange que recomiendan el uso de nohupo setsid, pero ninguno de estos métodos aborda todos los requisitos anteriores.
EDITAR: La página de manual de daemon (7) también ofrece algunos consejos, aunque parece haber algunas diferencias entre los SysVdemonios de estilo antiguo y los systemdmás nuevos . Dado que la compatibilidad con una variedad de distribuciones es importante, asegúrese de que la respuesta aclare cualquier diferencia.
daemony esas otras cosas son para ejecutar scripts de shell arbitrarios sin ninguna disposición para ejecutarse como Un demonio. Como usted es el autor y tiene el control total de cómo se escribe ese script, hágalo para que pueda iniciarse desde un archivo systemd unitf o script rc.d. Usted hizo especifica "correcto"!