Le run level, ou niveau d'exécution, est un chiffre ou une lettre utilisé par le processus init des systèmes de type Unix pour déterminer les fonctions activées.
Le run level varie généralement de 0 à 6, et il y a parfois un niveau « s ». Chacun correspond à un ensemble d'applications à mettre en marche. En général, plus le run level est élevé, plus il y aura de fonctions actives.
Le run level 6 est affecté au redémarrage de l'ordinateur, et le run level 0 à l'arrêt. S'y ajoute parfois le niveau S (mode « single user »).
Le fichier /etc/inittab détermine le run level par défaut du système au démarrage, ainsi que les fonctions actives à chaque run level.
On passe d'un run level à l'autre en utilisant la commande init ou telinit (ou encore shutdown pour les transitions vers 0 ou 6). La transition d'un niveau à l'autre va lancer des scripts d'arrêt et de démarrage de fonctions.
Pour passer d'un niveau à l'autre, il n'est pas nécessaire de passer par les niveaux intermédiaires.
La commande « who -r » permet de consulter le run level actuel:
$ who -r
run-level 2 2011-11-24 15:59
La commande « runlevel » le permet également:
runlevel
N 2
Dans cette organisation héritée de UNIX System V, utilisée par Solaris et plusieurs distributions Linux, les scripts de lancement des applications sont regroupés dans un répertoire commun /etc/init.d. Ces scripts reçoivent un paramètre qui peut être start, stop, restart, etc.
À chaque niveau correspond un répertoire (typiquement /etc/rc.d/rc2.d pour le niveau 2) de liens symboliques vers
des fichiers de /etc/init.d. Ces liens symboliques portent des noms commençant par la lettre S ou K, suivi d'un numéro sur deux chiffres.
Lors d'un changement de run level :
les scripts dont le nom commence par un K dans le répertoire correspondant au niveau actuel sont lancés (dans l'ordre des numéros) avec le paramètre stop, ce qui a normalement pour effet d'arrêter le service correspondant,
les scripts du nouveau niveau qui commencent par S sont appelés successivement avec le paramètre start.