Les runlevel sous Linux
Les runlevel sont les différents niveaux de démarrage/arrêt sous Unix/Linux.
De petites différences existent suivant les différentes distributions. Je m'intéresse ici aux runlevel sous Debian GNU/Linux.
Des scripts shell existent dans le répertoire /etc/init.d/ Ces scripts somportent généralement ces lignes: #!/bin/sh case $1 in start) ... ... ;; stop) ... ... ;; esacOn peut ainsi démarrer et lancer des logiciels directement. Par exemple, pour démarrer apache: # /etc/init.d/apache start Ainsi on peut créer un script appelé par exemple mon_script dans /etc/init.d/ mais il ne faut pas oublier de les rendre exécutables à l'aide de la commande: # chmod +x /etc/init.d/mon_script start Il existe donc 6 runlevel sous Debian GNU/Linux: Le runlevel 0 correspond à l'arrêt du système Le runlevel 1 correspond au démarrage single-user Le runlevel 2 correspond mode de démarrage normal Les runlevels 3-5 correspondent à des modes de démarrage que l'on peut se configurer Le runlevel 6 correspond au redémarrage Les runlevel sont des niveaux constitués d'un ensemble de liens situés dans les répertoires /etc/rcX.d/ qui pointent vers les scripts situés dans /etc/init.d/ Ces liens sont de la forme Xnnmon_script ce qui pointe vers /etc/init.d/mon_script X= S ou K, où S passe le paramètre start au script mon_script et K passe le paramètre stop Si il n'y a pas de paramètres, le script est tout simplement executé que ca soit S ou K nn= numéro correspondant à la priorité de démarrage dans le runlevel. Les numéros les plus petits sont démarrés en premiers. Tous les scripts dont le lien commence par K sont executés en premier, ensuite vient les cripts dont le lien commence par S. La commande update-rc.d permet de gérer les différents runlevel (mais on peut également créer les liens "à la main") Par exemple, pour ajouter le script mon_script dans tous les runlevel: # update-rc.d mon_script defaults(Attention, si votre script ne comporte pas de start/stop, il sera executé à chaque runlevel) Pour retirer un script mon_script de tous les runlevel: # update-rc.d -f mon_script removePour régler avec précision un script dans un runlevel (celui-ci ne doit pas du tout être présent dans les runlevel): # update-rc.d mon_script start 42 2 3 5 . stop 31 0 6 .Ce qui démarre mon_script dans les runlevel 2, 3 ou 5 avec une priorité 42 et arrête mon_script avec une priorité 31 dans les runlevel 0 et 6 (ceci est un exemple). Au démarrage de Linux, le noyau est chargé puis il passe la main au processus INIT. Ce processus démarre tout ce qui se trouve dans /etc/rcS.d/ puis il lance par défaut le runlevel 2 (on peut changer cela dans le fichier /etc/inittab). Par exemple, si l'on veut démarrer en mode single-user (runlevel 1) (souvent en cas de problème du système), on tape Linux 1 au prompt de LILO. Howto runlevel Debian (en anglais) |