Ce bref guide explique ce qu'est un niveau d'exécution, combien de niveaux d'exécution existe-t-il sous Linux et comment vérifier le niveau d'exécution dans les systèmes d'exploitation Linux.
Qu'est-ce que le niveau d'exécution ?
Un niveau d'exécution est l'un des modes d'exécution d'un système d'exploitation basé sur Unix. En d'autres termes, un niveau d'exécution est un état init et l'ensemble du système qui définit les services système qui fonctionnent.
Dans le noyau Linux, il existe 7 niveaux d'exécution, de 0 à 6. Le système ne peut être démarré que sur un seul niveau d'exécution à la fois.
Par défaut, un système démarre au niveau d'exécution 3 ou au niveau d'exécution 5. Le niveau d'exécution 3 est CLI et 5 est GUI. Le niveau d'exécution par défaut est spécifié dans /etc/inittab
fichier dans la plupart des systèmes d'exploitation Linux.
En utilisant le niveau d'exécution, nous pouvons facilement savoir si X est en cours d'exécution, ou si le réseau est opérationnel, etc.
1. Vérifiez le niveau d'exécution sous Linux (init SysV)
Voici la liste des niveaux d'exécution dans les distributions Linux, qui ont été distribués avec SysV init
en tant que gestionnaire de service par défaut.
- 0 - Arrêt
- 1 - Mode texte mono-utilisateur
- 2 - Non utilisé (définissable par l'utilisateur)
- 3 - Mode texte multi-utilisateur complet
- 4 - Non utilisé (définissable par l'utilisateur)
- 5 - Mode graphique multi-utilisateur complet (avec un écran de connexion basé sur X)
- 6 - Redémarrer
Voyons maintenant comment trouver les niveaux d'exécution.
Pour connaître le niveau d'exécution du système, ouvrez votre Terminal et exécutez la commande suivante :
$ runlevel
Exemple de résultat :
N 3
Dans la sortie ci-dessus, la lettre 'N'
indique que le niveau d'exécution n'a pas été modifié depuis le démarrage du système. Et, 3
est le niveau d'exécution actuel, c'est-à-dire que le système est en mode CLI.
Dans les nouvelles versions de init
, vous pouvez trouver les détails du niveau d'exécution actuel et précédent à l'aide des variables d'environnement appelées RUNLEVEL
et PREVLEVEL
.
Supposons, par exemple, que pour connaître le niveau d'exécution actuel, vous devez exécuter :
$ echo $RUNLEVEL
Pour retrouver le niveau d'exécution précédent :
$ echo $PREVLEVEL
Si vous souhaitez changer le RunLevel en autre chose, modifiez /etc/inittab
fichier :
$ sudo vi /etc/inittab
Rechercher et modifier l'entrée initdefault
au niveau d'exécution de votre choix. Supposons, par exemple, que pour définir le niveau d'exécution sur le mode graphique multi-utilisateur (niveau d'exécution 5), modifiez-le comme indiqué ci-dessous.
id:5:initdefault:
Enregistrez et fermez le fichier. Redémarrez votre système pour vous connecter à votre nouveau niveau d'exécution.
Pour plus de détails sur les niveaux d'exécution, consultez les pages de manuel.
$ man runlevel
2. Vérifier le niveau d'exécution sous Linux (Systemd)
Dans les versions récentes des systèmes Linux (à partir de RHEL 7, Ubuntu 16.04 LTS), le concept de niveaux d'exécution a été remplacé par systemd
cibles.
Voici la liste des Systemd
cibles dans les distributions Linux, qui ont été distribuées avec Systemd
en tant que gestionnaire de service par défaut.
- runlevel0.target, poweroff.target - Arrêter
- runlevel1.target, rescue.target – Mode texte mono-utilisateur
- runlevel2.target, multi-user.target - Non utilisé (définissable par l'utilisateur)
- runlevel3.target, multi-user.target - Mode texte multi-utilisateur intégral
- runlevel4.target, multi-user.target - Non utilisé (définissable par l'utilisateur)
- runlevel5.target,graphical.target - Mode graphique multi-utilisateur complet (avec un écran de connexion basé sur X)
- runlevel6.target,reboot.target - Redémarrer
Dans les systèmes Linux qui utilisent Systemd
en tant que gestionnaire de service par défaut, vous pouvez trouver la cible actuelle à l'aide de la commande :
$ systemctl get-default
Exemple de résultat :
graphical.target
Comme vous le voyez dans la sortie ci-dessus, mon niveau d'exécution actuel (cible en d'autres termes) est 5
, qui est le mode graphique.
Pour afficher toutes les cibles actuellement chargées, exécutez :
$ systemctl list-units --type target
Exemple de résultat :
UNIT LOAD ACTIVE SUB DESCRIPTION basic.target loaded active active Basic System bluetooth.target loaded active active Bluetooth cryptsetup.target loaded active active Local Encrypted Volumes getty.target loaded active active Login Prompts graphical.target loaded active active Graphical Interface local-fs-pre.target loaded active active Local File Systems (Pre) local-fs.target loaded active active Local File Systems multi-user.target loaded active active Multi-User System network-online.target loaded active active Network is Online network-pre.target loaded active active Network (Pre) network.target loaded active active Network nfs-client.target loaded active active NFS client services nss-lookup.target loaded active active Host and Network Name Lookups nss-user-lookup.target loaded active active User and Group Name Lookups paths.target loaded active active Paths remote-fs-pre.target loaded active active Remote File Systems (Pre) remote-fs.target loaded active active Remote File Systems rpc_pipefs.target loaded active active rpc_pipefs.target rpcbind.target loaded active active RPC Port Mapper slices.target loaded active active Slices sockets.target loaded active active Sockets sound.target loaded active active Sound Card swap.target loaded active active Swap sysinit.target loaded active active System Initialization timers.target loaded active active Timers veritysetup.target loaded active active Local Verity Integrity Protected Volumes LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. 26 loaded units listed. Pass --all to see loaded but inactive units, too. To show all installed unit files use 'systemctl list-unit-files'.
La commande ci-dessus affichera uniquement les cibles actives.
Pour afficher toutes les cibles chargées (actives et inactives), exécutez :
$ systemctl list-units --type target --all
Si vous souhaitez remplacer RunLevel par autre chose, par exemple runlevel3.target
, définissez-le comme indiqué ci-dessous :
$ sudo systemctl set-default runlevel3.target
Pour passer à une autre unité cible dans la session en cours uniquement, exécutez la commande suivante :
$ sudo systemctl isolate runlevel3.target
Pour plus de détails, reportez-vous à Systemd
pages de manuel.
$ man systemd
Vérifiez le niveau d'exécution de Linux à l'aide de la commande "who"
Comme l'un des lecteurs l'a suggéré dans la section des commentaires ci-dessous, nous pouvons également trouver le niveau d'exécution en utilisant who
commande comme ci-dessous :
$ who -r
Exemple de résultat :
run-level 5 2021-06-09 10:21
J'espère que cela vous aidera.
Lire connexe :
- Comment répertorier les services de démarrage au démarrage sous Linux