Crear un daemon en linux
20 enero 2007
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
21 agosto 2009 at 12:02 am
Idolo una consulta. Quiero crear un daemon que, cuando apriete BLOQ MAYUS haga algo para avisar al usuario. o con cualquier tipo de bloqueo. Esto sirve de herramienta visual cuando uno está cansado, o solo por curiosidad. Quería preguntarte como podría un daemon reconocer el pulsado de tales teclas. muchas gracias
31 mayo 2011 at 12:57 am
quisiera hacer un demonio para iptables