10 – Demoni

()

In informatica, nei sistemi Unix, e più in generale nei sistemi operativi multitasking, un demone (daemon
in inglese) è un programma eseguito in background, cioè senza che sia sotto il controllo diretto dell’utente,
tipicamente fornendo un servizio all’utente.

Di solito i demoni hanno nomi che finiscono per “d”: per esempio, syslogd è il demone che gestisce i log di sistema, dhcpd è il demone che assegna l’indirizzo IP in maniera dinamica tramite DHCP, httpd è il demone che fa girare il servizio HTTP ecc…

Spesso i demoni vengono avviati al boot del sistema: in generale hanno la funzione di rispondere a
determinate richieste, che siano di rete, hardware, ecc.

Ad esempio, alcuni usi dei demoni possono essere la configurazione delle periferiche, (come DEVFS nei sistemi Linux), eseguire dei compiti impostati a determinati intervalli (come cron), gestire il suono (come aRts e esd), gestione del controllo versione (come CVS o subversion) e una vasta varietà di altri compiti. In generale dunque essi offrono all’utente e all’amministratore determinati servizi.

Ma da cosa deriva il termine Daemon ?
Un’altra possibile etimologia del termine è nell’acronimo “disk and execution monitor” (monitor dei dischi e dell’esecuzione), ma è più che altro una supposizione.

In senso strettamente tecnico, i sistemi Unix considerano come demone qualsiasi processo che abbia init come processo padre e che non abbia più alcun terminale controllante (cioè un terminale che gli possa inviare direttamente dei segnali).

Poiché init adotta i processi orfani, il metodo comunemente usato dai programmi per rendersi demoni è quello di invocare la chiamata di sistema fork per creare un processo figlio che sia un loro duplicato e poi terminare, mentre il figlio, rimasto orfano (e quindi adottato da init), continua normalmente l’esecuzione chiudendo i canali standard, invocando la chiamata di sistema setsid per disconnettersi da ogni terminale controllante e cambiando la directory corrente a / in modo da non tenere inutilmente occupati dei file system (cosa che impedirebbe di smontarli). Questo idioma di programmazione è talvolta descritto con l’espressione inglese «fork off and die».

Nei sistemi Unix è possibile rendere un qualsiasi programma non interattivo pressoché identico ad un
demone eseguendolo in background tramite il comando nohup ed effettuando la redirezione dello
standard input, standard output e standard error a /dev/null). Ad esempio:

user@host:/path $ nohup batchscript.sh </dev/null >/dev/null 2>&1 & 29788
user@host:/path $

Dove:

batchscript.sh è il programma da avviare;
</dev/null indica di usare /dev/null come standard input;
>/dev/null indica di indirizzare lo standard output a /dev/null;
2>&1 indica di indirizzare lo standard error alla stessa destinazione dello standard output (sempre
/dev/null);
lo & finale indica di eseguire in background il tutto.

/ 5
Grazie per aver votato!

How useful was this post?

Click on a star to rate it!

Average rating / 5. Vote count:

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?