11.5 Avvio dei Servizi

È comune per un sistema sostenere un certo numero di servizi. Questi possono essere avviati in molti modi differenti, ognuno dei quali ha vantaggi differenti.

I programmi installati tramite port o dalla collezione dei pacchetti metteranno spesso uno script in /usr/local/etc/rc.d che verrà invocato all'avvio del sistema con l'argomento start, ed allo spegnimento con l'argomento stop. Questo è il modo consigliato per avviare i servizi di sistema che devono funzionare come root, o che hanno bisogno di essere lanciati da root. Questi script sono registrati come parte dell'installazione del pacchetto, e saranno rimossi quando verrà rimosso il pacchetto.

Uno script di avvio generico in /usr/local/etc/rc.d appare così:

#!/bin/sh
echo -n ' FooBar'

case "$1" in
start)
        /usr/local/bin/foobar
        ;;
stop)
        kill -9 `cat /var/run/foobar.pid`
        ;;
*)
        echo "Usage: `basename $0` {start|stop}" >&2
        exit 64
        ;;
esac

exit 0

Gli script di avvio di FreeBSD cercheranno in /usr/local/etc/rc.d degli script che abbiano una estensione .sh e siano eseguibili da root. Gli script trovati verranno richiamati con l'opzione start all'avvio, e stop allo spegnimento per permettergli di svolgere il loro compito. Quindi se volessi che il suddetto script di esempio venisse trovato ed eseguito al momento giusto, durante l'avvio del sistema, dovresti salvarlo in un file di nome FooBar.sh in /usr/local/etc/rc.d e dovresti assicurarti che sia eseguibile. Puoi rendere uno script eseguibile tramite chmod(1) come mostrato di seguito:

# chmod 755 FooBar.sh

Alcuni servizi aspettano di essere invocati da inetd(8) quando viene ricevuta una connessione su una porta valida. Ciò è comune per tutti i server di lettura della posta (POP e IMAP, ecc.). Questi servizi vengono abilitati modificando il file /etc/inetd.conf. Guarda inetd(8) per i dettagli sulla modifica di questo file.

Alcuni servizi aggiuntivi potrebbero non essere coperti dalle opzioni in /etc/rc.conf. Tradizionalmente questi vengono avviati mettendo i comandi necessari per invocarli in /etc/rc.local. Da FreeBSD 3.1 non c'è più nessun /etc/rc.local predefinito;. Se venisse creato dall'amministratore, esso verrebbe comunque gestito normalmente. Nota che rc.local viene generalmente visto come ultima possibilità; se c'è un posto migliore per avviare il servizio, fallo da lì.

Nota: NON mettere nessun comando in /etc/rc.conf. Per avviare i demoni, o per eseguire un qualsiasi comando all'avvio, metti invece uno script in /usr/local/etc/rc.d.

è anche possibile usare il demone cron(8) per avviare i servizi di sistema. Questo approccio ha molti vantaggi, non ultimo il fatto che poiché cron(8) esegue questi processi come il proprietario di crontab, i servizi possono essere avviati e mantenuti da utenti non-root.

Per fare ciò si approfitta di una caratteristica di cron(8): le specifiche temporali possono essere sostituite da @reboot, che farà sì che il compito venga eseguito quando cron(8) viene avviato, poco dopo l'avvio del sistema.

Questo, ed altri documenti, possono essere scaricati da ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Per domande su FreeBSD, leggi la documentazione prima di contattare <questions@FreeBSD.org>.
Per domande su questa documentazione, invia una e-mail a <doc@FreeBSD.org>.