Linux Personnaliser
runlevels
Gestion des processus lancés au démarrage du système



Pour : Linux


Fonctionnement des services

Au démarrage ou a l'arret d'une machine, un certain nombre de processus(logiciels) doivent être lancé ou arrêté.
Dans les deux cas le processus init est utilisé en premier, car il a le rôle de lancer tout les autres processus et dans un certain ordre.

Les processus sont lancé a partir de script situé dans "/etc/init.d/" pour les sytèmes de type Debian, ce répertoire peut être différent sous votre distribution.
Ces scripts utilise quelques paramètres:

start => Démarrer le service
stop => Arrêter le service
reload => Recharge la configuration sans arrêter le service
restart => Redémarrer le service
status => Afficher l'état actuel du service

Exemple:

# /etc/init.d/mysql stop





Fonctionnement des runlevels

Il existe 7 runlevels différents dont chacun est associé à un état de votre machine.
L'ordre des runlevels de votre distribution ce trouve dans le fichier "/etc/inittab", il peut avoir une petite différence d'un système à un autre.
Par exemple pour Debian:

cat /etc/inittab ... # Runlevel 0 is halt. # Runlevel 1 is single-user. # Runlevels 2-5 are multi-user. # Runlevel 6 is reboot. ...



Traduction:
Runlevel 0 => Arrêt de la machine
Runlevel 1 => Simple utilisateur, utilisé pour le mode maintenance
Runlevel 2 à 5 => Mode multi-utilisateur
Runlevel 6 => Redémarrage de la machine

Chaque runlevels correspond à un répertoire dans "/etc/", ils portent chacun le numéro associé a leur runlevels respectif "rc0.d, rc1.d, rc2.d, rc3.d, rc4.d, rc5.d et rc6.d".



Lancement automatique avec les runlevels

Dans l'ordre du démarrage, le noyaux ce charge puis va passer la main à init qui va lire en premier lire le répertoire "/etc/rcS.d/" qui contient la priorité d'exécution du montage de périphérique ...

Puis le système va se placer dans le répertoire du runlevel 2, 3, 4 ou 5.
Par défault il utilise le runlevel "2" pour démarrer, il va ainsi consulter le répertoire /etc/rc2.d/ ou il contient des liens vers des scripts de démarrage de services.

Le runlevel par défault peut être changé dans le fichier "/etc/inittab" a cette ligne:
id:2:initdefault:

Voici son contenu du répertoire "/etc/rc2.d/":

# ls -l /etc/rc2.d/ total 4 -rw-r--r-- 1 root root 677 1 janv. 2011 README lrwxrwxrwx 1 root root 17 28 nov. 11:21 S01ipvsadm -> ../init.d/ipvsadm lrwxrwxrwx 1 root root 17 26 nov. 13:00 S14portmap -> ../init.d/portmap lrwxrwxrwx 1 root root 20 26 nov. 13:00 S15nfs-common -> ../init.d/nfs-common lrwxrwxrwx 1 root root 20 26 nov. 13:25 S17fancontrol -> ../init.d/fancontrol lrwxrwxrwx 1 root root 17 26 nov. 13:00 S17rsyslog -> ../init.d/rsyslog lrwxrwxrwx 1 root root 17 26 nov. 15:33 S18apache2 -> ../init.d/apache2 lrwxrwxrwx 1 root root 15 26 nov. 15:33 S19acpid -> ../init.d/acpid lrwxrwxrwx 1 root root 13 26 nov. 15:33 S19atd -> ../init.d/atd lrwxrwxrwx 1 root root 14 26 nov. 15:33 S19cron -> ../init.d/cron lrwxrwxrwx 1 root root 15 26 nov. 15:33 S19exim4 -> ../init.d/exim4 lrwxrwxrwx 1 root root 20 28 nov. 11:21 S19ldirectord -> ../init.d/ldirectord lrwxrwxrwx 1 root root 14 26 nov. 15:33 S19logd -> ../init.d/logd lrwxrwxrwx 1 root root 18 26 nov. 15:33 S19openhpid -> ../init.d/openhpid lrwxrwxrwx 1 root root 13 26 nov. 15:33 S19ssh -> ../init.d/ssh lrwxrwxrwx 1 root root 14 26 nov. 15:33 S20drbd -> ../init.d/drbd lrwxrwxrwx 1 root root 18 26 nov. 15:33 S21bootlogs -> ../init.d/bootlogs lrwxrwxrwx 1 root root 19 26 nov. 15:33 S21heartbeat -> ../init.d/heartbeat lrwxrwxrwx 1 root root 13 28 nov. 09:10 S22mon -> ../init.d/mon lrwxrwxrwx 1 root root 18 26 nov. 15:33 S22rc.local -> ../init.d/rc.local lrwxrwxrwx 1 root root 19 26 nov. 15:33 S22rmnologin -> ../init.d/rmnologin lrwxrwxrwx 1 root root 23 26 nov. 15:33 S22stop-bootlogd -> ../init.d/stop-bootlogd





Comme vous pouvez le voir, le répertoire contient que des liens vers des scripts qui se trouve dans "/init.d/".

Voici la structure le la syntaxe d'une ligne:
X00nom_service -> ../init.d/script_service

X Est soit la lettre S pour utiliser le paramètre start ou la lettre K pour le paramètre stop.
00 Permet de définir l'ordre de la priorité d'exécution des services, lance par ordre croissant du plus petit au plus grand chiffre.
nom_service Doit être le nom du service a lancer ou arrêter.
-> ../init.d/script_service Indique le lien du script a exécuter.

Vu que les scripts seront lus par ordre alphalbétique, les liens commençant par la lettre K seront exécuter en premier.


Vous pouvez rajouter l'exécution de script dans les runlevels avec:
update-rc.d - Configurer et personnaliser les runlevels des services lancé au démarrage

Ou les ajouter manuellement en créant un lien symbolique avec:
ln - Créer un lien en dur ou symbolique (raccourci)



Par O.Cédric
Sur www.octetmalin.net

Article publié le:
20/12/2011 09:51





Cette page vous à plus?

Dîtes que vous l'aimez en cliquant sur le bouton Facebook.