Manuale di FreeBSD
Indietro | Capitolo 11 Configurazione e Messa a Punto | Avanti

# 11.7 Usare rc con FreeBSD

Contributo di Tom Rhodes.

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

> Nota: 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.

Indietro | Partenza | Avanti
Configurare l'Utility `cron` | Risali | Configurazione delle Interfacce di Rete

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>.