Crear un daemon en linux
Ando buscando como hacer un daemon en una máquina linux que monitorice diferentes procesos. He encontrado lo que tiene que hacer un daemon:
* Convertirse en un process-leader (haciendo un setsid, de lo contrario sería un proceso huérfano),
* Separarse de la shell que lo ejecutó (después de hacer fork),
* Cambiar el directorio (chdir) al directorio raiz (por temas de seguridad),
* Establecer umask en 0 (por temas de seguridad),
* Cerrar todos los descriptores de fichero (stdin, stderr, stdout) a /dev/null
Un ejemplo de daemon programado en perl.
use POSIX qw(setsid);
chdir '/' or die "Can't chdir to /: $!";
umask 0;
open STDIN, '/dev/null' or die "Can't read /dev/null: $!";
#open STDOUT, '>/dev/null' or die "Can't write to /dev/null: $!";
open STDERR, '>/dev/null' or die "Can't write to /dev/null: $!";
defined(my $pid = fork) or die "Can't fork: $!";
exit if $pid;
setsid or die "Can't start a new session: $!";
while(1) {
sleep(5);
print "Hello...\n";
}
En este caso no cierra la salida estándar para poder ver que el daemon está activo.
Podemos ver un ejemplo de configuracion de los scripts de parada y arranque
Más detalles en Linux daemon HOWTO
No hay comentarios:
Publicar un comentario