Formation d'administrateur Baby/Serveur de base/SB04-Cours et TP/1

Aller à : navigation, rechercher
Alb-sb04-1-image1.jpg

Préparez une page wiki

Comment faire exécuter une commande au moment de l'arrêt du système ?

Suivant

Un bon démarrage

Inittab

Voilà plusieurs fois que nous parlons de "niveaux de démarrage". Il est temps de se pencher d'un peu plus près sur ce concept.

Les "runlevels" sont gérés par /etc/inittab. Ce fichier est à peu près le même pour toutes les distributions basées sur la red hat, soient red hat, SuSE ou Mandrake. Ici celui de la Mandrake 10.1 (en partie).

# Default runlevel. The runlevels used by Mandrakelinux are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS 
#(The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)

Celui de la Debian est différent (il y a moins de runlevels de configurés par défaut). Vous pouvez voir tout seul celui de SUSE :-).

Vous remarquez que, de toute façon, les scripts de démarrage sont situés dans /etc/init.d. La seule chose que vous avez normalement à modifier dans /etc/inittab, c'est le niveau par défaut. Ne touchez rien d'autre si vous n'êtes pas vraiment sûrs de ce que vous faites :-).

Les scripts

Les scripts se trouvent donc dans /etc/init.d. Ils sont dans l'ensemble assez complexes, car ils essaient de faire face à toutes les situations. Pourtant cette complexité n'est pas obligatoire. Regardez, par exemple, le script "boot.local". Il ne contient que des commentaires. Il est là pour que vous puissiez mettre des commandes qui seront exécutées dès le début du démarrage, avant tout autre script.

Si, popur une raison ou une autre, vous avez besoin besoin de démarrer une application après l'initialisation, vous pouvez créer un script "boot.final" où vous mettrez la ligne de commande de cette application.

L'ordre d'exécution

Les principaux scripts, ceux que vous pouvez avoir à exécuter en cours de travail, sont accessibles sur la SUSE (et seulement sur la SUSE) en tapant "rc" suivi du nom du script, "rcsmb", par exemple. Pour en voir la liste, connectez-vous en root sur votre serveur et tapez :

rc [tab][tab]

Alb-sb04-1-init01.jpg

Mais ces scripts ne sont pas exécutés ainsi au démarrage. Il ne sont même pas tous exécutés, selon le runlevel que vous employez. L'ordre et la liste des scripts employés est trouvé dans les répertoires "rcX.d" où X représente le numéro de runlevel.

Ces répertoires ne sont pas placés au même endroit, selon la distribution. Pour nous ils sont dans /etc/init.d. Par exemple, rc5.d contient :

Alb-sb04-1-init02.jpg

Les fichiers "S" (pour Start) sont exécutés dans l'ordre de leur numéro lors du démarrage, les fichiers "K" (Kill) lors de l'arrêt.

Alb-sb04-1-init03.jpg

On voit facilement que ces commandes sont en fait des liens vers les scripts utiles situés dans /etc/init.d.