Crea sito
22 Ottobre 2020

Officine Informatiche Roma

ICT SERVICES ROMA – BAZAAR INFORMATICO

10 – Demoni

2 min read
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...

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:

[email protected]:/path $ nohup batchscript.sh </dev/null >/dev/null 2>&1 & 29788
[email protected]:/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.

Translate »