[Tutorial] Creazione di Demoni

Forum dedicato agli studenti del corso linux e a tutti gli amanti del pinguino!

Moderatore: matteo

[Tutorial] Creazione di Demoni

Messaggioda matteo » mar mag 09, 2006 10:51 pm

Non di frequente mi capita di fare qualche scriptino che alla fine faccio girare come demone. Alla fine un demone non è niente di complicato e non è necessario che sia scritto in C; lo shell scripting che stiamo studiando è più che sufficiente.
Le istruzioni per crearne uno le ho già date (implicitamente) qui:
http://www.frattocchie.it/forum/viewtopic.php?t=72

Ora ne facciamo uno che provvederà ad eliminare un file ogni 60 secondi; lo chiameremo removed ('d' come si addice a tutti i demoni che si rispettano):
Codice: Seleziona tutto
[b]removed[/b]

#!/bin/bash
while true;do
    rm -f /tmp/file 2>/dev/null
    sleep 60
done

diamo un
$ chmod +x removed
e lanciamolo con
$ ./removed

come avrete intuito, questo sistema non restituisce il prompt e quando si chiude la shell muore; in quanto tale non può essere chiamato tale; inoltre ricordiamo che un demone non deve produrre nessun output a schermo (visto che non ne ha uno). Per 'trasformarlo' in un demone sarebbe sufficiente lanciarlo con
$ nohup ./removed >/dev/null 2>/dev/null &
ma quando si è visto mai un demone lanciato in tale modo?
Una soluzione è integrarlo nel demone stesso aggiungendo i parametri di start/stop
Codice: Seleziona tutto
#!/bin/bash
ME="`pwd`/`basename $0`"
case $1 in
    'start') nohup $ME >/dev/null 2>/dev/null &
             PID=$!
             echo $PID > /var/run/removed.pid
             exit 0
             ;;
    'stop' ) kill `cat /var/run/removed.pid` >/dev/null
             exit $?
             rm /var/run/removed.pid
             ;;
esac

while true;do
    rm -f /tmp/file 2>/dev/null
    sleep 60
done

(N.B.: sembra complicato ma non lo è; può essere complicato crearne uno da zero, ma nel mondo dei sistemisti e programmatori si vive di copia/incolla e qualche piccola modifica)

Indipendentemente su come funziona siamo riusciti a risolvere il problema daemon.

Al nostro demone manca solamente la possibilità di interagire in qualche modo con l'utente per poter ricevere ordini, ma questa è un'altra storia.

Matteo[/code]
matteo
 
Messaggi: 327
Iscritto il: ven mar 17, 2006 10:22 am

Torna a Unix, Linux & reti

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron