En 2002, le système rc.d
de NetBSD pour
l'initialisation du système a
été intégré à FreeBSD. Les
utilisateurs noteront les fichiers présents dans le
répertoire /etc/rc.d
. Plusieurs de ces
fichiers sont destinés aux services de base qui peuvent
être contrôlés avec les options
start
, stop
, et
restart
. Par exemple, sshd(8) peut
être relancé avec la commande suivante:
#
/etc/rc.d/sshd restart
Cette procédure est similaire pour d'autres services.
Bien sûr, les services sont généralement
lancés automatiquement au démarrage dès qu'ils sont
spécifiés dans le fichier rc.conf(5). Par
exemple, activer le “daemon” de translation d'adresses
au démarrage est aussi simple que d'ajouter la ligne
suivante au fichier /etc/rc.conf
:
natd_enable="YES"
Si une ligne natd_enable="NO"
est
déjà présente, modifiez alors le
NO
par YES
. Les
procédures rc chargeront automatiquement les autres
services dépendants lors du prochain redémarrage
comme décrit ci-dessous.
Comme le système rc.d
est
à l'origine destiné pour lancer/arrêter les
services au démarrage/à l'arrêt du
système, les options standards start
,
stop
et restart
ne seront
effectives que si les variables appropriées sont
positionnées dans le fichier
/etc/rc.conf
. Par exemple, la commande
sshd restart
ci-dessus ne fonctionnera que si
sshd_enable
est fixée à
YES
dans /etc/rc.conf
.
Pour lancer, arrêter ou redémarrer un service
indépendemment des paramétrages du fichier
/etc/rc.conf
, les commandes doivent
être précédées par
« one ». Par exemple pour redémarrer
sshd
indépendemment du
paramétrage du fichier /etc/rc.conf
,
exécutez la commande suivante:
#
/etc/rc.d/sshd onerestart
Il est facile de contrôler si un service est
activé dans le fichier /etc/rc.conf
en exécutant la procédure
rc.d
appropriée avec l'option
rcvar
. Ainsi, un administrateur peut
contrôler que sshd
est
réellement activé dans
/etc/rc.conf
en exécutant:
#
/etc/rc.d/sshd rcvar
# sshd $sshd_enable=YES
La seconde ligne (# sshd
) est la sortie
de la commande sshd
et non pas une console
root
.
Pour déterminer si un service est actif, une option
appelée status
est disponible. Par
exemple pour vérifier que sshd
a
réellement été lancé:
#
/etc/rc.d/sshd status
sshd is running as pid 433.
Dans certains cas, il est également possible de recharger un service
avec l'option reload
. Le système
tentera d'envoyer un signal à un service individuel, le
forçant à recharger ses fichiers de configuration.
Dans la plupart des cas cela signifie envoyer un signal
SIGHUP
au service. Le support de cette
fonctionnalité n'est pas disponible pour chaque
service.
Le système rc.d
n'est pas
uniquement utilisée pour les services réseaux,
elle participe à la majeure partie de l'initialisation du
système. Prenez par exemple le fichier
bgfsck
. Quand cette procédure est
exécutée, il affichera le message suivant:
Starting background file system checks in 60 seconds.
Donc ce fichier est utilisé pour les vérifications du système de fichiers en arrière plan, qui sont uniquement effectuées lors de l'initialisation du système.
De nombreux services système dépendent
d'autres services pour fonctionner correctement. Par exemple,
NIS et les autres services basés sur les RPCs peuvent
échouer s'ils sont lancés après le
lancement du service rpcbind
(portmapper).
Pour résoudre ce problème, l'information
concernant les dépendances et autres
méta-données est inclue dans les commentaires au
début de chaque procédure de démarrage. Le
programme rcorder(8) est alors utilisé pour analyser
ces commentaires lors de l'initialisation du système en
vue de déterminer l'ordre dans lequel les services
système seront invoqués pour satisfaire les
dépendances. Les mots suivants peuvent être
présents en tête de chaque fichier de
démarrage:
PROVIDE
: indique les services que
fournit ce fichier.
REQUIRE
: liste les fichiers dont
dépend ce service. Ce fichier sera
exécuté après les
services indiqués.
BEFORE
: liste les services qui
dépendent du service présent. Ce fichier sera
exécuté avant les services
indiqués.
En utilisant ce système, un administrateur peut facilement contrôler les services du système sans avoir à se battre avec les “runlevels” comme sur d'autres systèmes d'exploitation UNIX®.
Des informations supplémentaires concernant le
système rc.d
peuvent être trouvées dans les pages de manuel
rc(8) et rc.subr(8). Si vous êtes
intéressé par l'écriture de vos propres
procédures rc.d
ou pour
l'amélioration des procédures existantes, vous
trouverez cette
article utile.
Ce document, ainsi que d'autres peut être téléchargé sur ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Pour toutes questions à propos de FreeBSD, lisez la
documentation avant de contacter
<questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez
<doc@FreeBSD.org>.