11.5 Avvio dei Servizi

Contributo di Tom Rhodes.

Molti utenti scelgono di installare software di terze parti in FreeBSD attraverso la collezione dei port. Nell magior parte dei casi potrebbe essere necessario configurare il software in un modo tale che sia avviato all'inizializzazione di sistema. Servizi, come mail/postfix o www/apache13 sono solo due fra i molti pacchetti software che possono essere avviati durante l'inizializzazione di sistema. Questa sezione spiega le procedure disponibili per avviare software di terze parti.

In FreeBSD, molti servizi inclusi, come cron(8), sono avviati attraverso gli script di startup. Questi script possono differire a seconda della verione di FreeBSD o del produttore; comunque il più importante aspetto da considerare è che la configurazione di startup può essere gestita tramite semplici script di inizializzazione.

Prima dell'avvento di rc.d, gli applicativi lasciavano un semplice script di avvio nella directory /usr/local/etc/rc.d che sarebbe stato poi letto dagli script di inizializzazione di sistema. Questi script sarebbero poi eseguiti durante la fase di avvio del sistema.

Mentre molti individui hanno speso ore cercando di integrare il vecchio stile di configurazione nel nuovo sistema, resta il fatto che qualche utility di terze parti necessita ancora di uno script semplicemente lasciato nella succitata directory. Le sottili differenze negli script dipendono dal fatto se rc.d sia usato o meno. Prima di FreeBSD 5.1 viene usato il vecchio metodo di configurazione ed in quasi tutti i casi uno script di nuovo tipo funzionerebbe perfettamente.

Mentre ogni script deve rispettare alcuni requisiti minimi, il più delle volte questi requisiti sono indipendenti dalla versioni di FreeBSD. Ogni script deve avere una estensione .sh appesa alla fine ed ogni script deve essere eseguibile dal sistema. L'ultima richiesta può essere soddisfatta usando il comando chmod e impostando i permessi a 755. Ci dovrebbe essere, come minimo, un'opzione per fare lo start dell'applicativo ed un'opzione per farne lo stop.

Il più semplice script di avvio probabilmente sembrerebbe simile al seguente:

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

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

exit 0

Questo script fornisce un'opzione stop e start per l'applicazione a cui ci riferiamo semplicemente come utility.

Potrebbe essere avviata manualmente con:

# /usr/local/etc/rc.d/utility.sh start

Mentre non tutto il software di terze parti richiede la linea in rc.conf, quasi ogni giorno un nuovo port viene modificato per accettare questa configurazione. Controlla l'output finale dell'installazione per maggiori informazioni su un applicativo specifico. Ci sarà del software di terze parti che fornisce script di avvio che permettono all'applicativo di essere usato con rc.d; tuttavia, questo sarà discusso nella successiva sezione.

11.5.1 Configurazione Estesa degli Applicativi

Ora che FreeBSD include rc.d, la configurazione dell'avvio degli applicativi è diventata più semplice, e più flessibile. Usando le parole chiave discusse nella sezione rc.d, gli applicativi ora possono essere configurati dopo certi altri servizi come ad esempio il DNS; possono permettere che siano passati flag extra nel codice attraverso rc.conf al posto di flag statici negli script di avvio, e molto altro. Uno script basilare potrebbe assomigliare al seguente:

#!/bin/sh
#
# PROVIDE: utility
# REQUIRE: DAEMON
# KEYWORD: shutdown

#
# DO NOT CHANGE THESE DEFAULT VALUES HERE
# SET THEM IN THE /etc/rc.conf FILE
#
utility_enable=${utility_enable-"NO"}
utility_flags=${utility_flags-""}
utility_pidfile=${utility_pidfile-"/var/run/utility.pid"}

. /etc/rc.subr

name="utility"
rcvar=`set_rcvar`
command="/usr/local/sbin/utility"

load_rc_config $name

pidfile="${utility_pidfile}"

start_cmd="echo \"Starting ${name}.\"; /usr/bin/nice -5 ${command} ${utility_flags} ${command_args}"

run_rc_command "$1"

Questo script assicurerà che utility partirà dopo il servizio daemon. Fornisce inoltre un metodo per settare e tracciare il PID, o il file dell'ID di processo.

Questa applicazione potrebbe avere le seguenti linee piazzate in /etc/rc.conf:

utility_enable="YES"

Questo metodo permette inoltre una semplice manipolazione degli argomenti di linea di comando, incluse le funzioni di default definite in /etc/rc.subr, compatibilità con l'utility rcorder(8) e fornisce una più semplice configurazione attraverso il file rc.conf.

11.5.2 Usare i Servizi per Avviare i Servizi

Altri servizi, come i demoni POP3, IMAP, etc. potrebbero essere avviati usando inetd(8). Questo implica l'installazione del servizio dalla collezione dei port e l'aggiunta di una linea di configurazione al file /etc/inetd.conf o togliendo dei commenti in una delle linee di configurazione del file stesso. L'uso di inetd e la sua configurazione è descritto in dettaglio nella sezione inetd.

In alcuni casi, potrebbe essere più plausibile usare il demone cron(8) per avviare i servizi di sistema. Questo approccio ha alcuni vantaggi poichè cron esegue questi processi come l'utente proprietario del file crontab. Questo permette ad utenti regolari di avviare e mantenere alcuni applicativi.

Il comando cron fornisce una caratteristica unica, @reboot, che potrebbe essere usato al posto della specifica del tempo. Questo farà sì che il job sia eseguito quando cron(8) è avviato, normalmente durante l'inizializzazione di 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>.