Nel 2002 FreeBSD ha integrato il sistema di inizializzazione
rc.d
di NetBSD.
Gli utenti dovrebbero aver notato i file elencati nella cartella
/etc/rc.d
. Molti di questi file
sono servizi di base che possono essere controllati
con opzioni start
, stop
,
e restart
.
Ad esempio, sshd(8) può essere riavviato
con il comando seguente:
#
/etc/rc.d/sshd restart
Questa procedura è simile a quella per altri
servizi. Naturalmente, i servizi in genere vengono avviati
automaticamente in fase di avvio secondo quanto specificato in
rc.conf(5). Ad esempio, per abilitare il demone per il
NAT (Network Address Translation) all'avvio basta aggiungere la linea
seguente a /etc/rc.conf
:
natd_enable="YES"
Se esiste già una linea natd_enable="NO"
,
allora basta cambiare il valore da NO
a
YES
. Gli script rc caricheranno automaticamente
ogni altro servizio durante il riavvio seguente, come
descritto più avanti.
Poichè il sistema di rc.d
è inteso prevalentemente per avviare/bloccare i servizi al
momento dell'accensione/spegnimento, le opzioni standard
start
, stop
e restart
avranno il comportamento appropriato solo seè stata impostata
la variabile appropriata in /etc/rc.conf
.
Ad esempio il comando precedente sshd restart
funzionerà solo se in /etc/rc.conf
è stata impostata l'opzione sshd_enable
a YES
. Per avviare
(start
), fermare (stop
) o
riavviare (restart
) un servizio, ignorandole impostazioni
in /etc/rc.conf
, i comandi devono avere il prefisso
«one». Ad esempio per riavviare
sshd
trascurando le impostazioni esistenti in
/etc/rc.conf
, impartite il comando seguente:
#
/etc/rc.d/sshd onerestart
È semplice controllare se un servizio è stato abilitato
in /etc/rc.conf
eseguendo lo script appropriato in
rc.d
con l'opzione
rcvar
. Dunque, un amministratore può
controllare che
sshd
sia effettivamente abilitato in
/etc/rc.conf
eseguendo:
#
/etc/rc.d/sshd rcvar
# sshd $sshd_enable=YES
La seconda linea (# sshd
) è l'output
del comando
sshd
; non una console di
root
.
Per determinare se un servizio è attivo,
è disponibile l'opzione
status
. Ad esempio per
verificare che sshd
sia effettivamente avviato:
#
/etc/rc.d/sshd status
sshd is running as pid 433.
In alcuni case è anche possibile effettuare il
reload
di un servizio.
Questo tenterà di inviare un segnale al servizio,
per fargli ricaricare il suo file di configurazione. Nella maggior
parte dei casi si tratterà del segnale
SIGHUP
.
Il supporto per questa caratteristica non è garantito per
tutti i servizi.
La struttura di rc.d
non viene
usata solo per i servizi di rete, ma contribuisce anche per
buona parte all'inizializzazione del sistema.
Ad esempio, considerate il file
bgfsck
. Quando lo script viene
eseguito, esso stamperà il seguente messaggio:
Starting background file system checks in 60 seconds.
Dunque questo file viene usato per il controllo del file system in background, che avviene solo durante l'inizializzazione del sistema.
Molti servizi di sistema dipendono da altri servizi per
poter funzionare in maniera appropriata. Ad esempio, il NIS ed altri
servizi basati sulle RPC potrebbero non funzionare in assenza
di rpcbind
(portmapper). Per risolvere il problema,
nei commenti all'inizio di ogni script di avvio ci sono
informazioni sulle dipendenze ed altri metadati. Il programma
rcorder(8) viene poi utilizzato per effettuare il
parsing di questi commenti durante l'inizializzazione di sistema e per
determinare l'ordine con il quale questi servizi devono essere avviati
per avere le proprie dipendenze soddisfatte.
In cima ad ogni file di avvio possono essere incluse le seguenti
parole:
PROVIDE: Specifica i servizi forniti dal file.
REQUIRE: Elenca i servizi richiesti per far funzionare correttamente questo servizio. Questo file verrà eseguito dopo i tali servizi.
BEFORE: Elenca i servizi che dipendono da questo. Questo file verrà lanciato prima dei servizi specificati.
Usando questo metodo, un amministratore può controllare facilmente i servizi di sistema senza il fastidio dei «runlevel» come alcuni altri sistemi operativi UNIX®.
Informazioni addizionali sul sistema
rc.d
possono essere trovate
nelle pagine man di
rc(8) e rc.subr(8). Se sei interessato
a scrivere un tuo script rc.d
o
a migliorarne uno esisente, ti può essere utile
questo
articolo.
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>.