9.3. Travailler avec des cibles Systemd
.target et leur unique but consiste à regrouper d'autres unités Systemd dans une chaîne de dépendances. Par exemple, l'unité graphical.target, qui est utilisée pour lancer une session graphique, lance des services système comme le gestionnaire d'affichage GNOME (gdm.service) ou le services des comptes (accounts-daemon.service) et active également l'unité multi-user.target. De manière similaire, l'unité multi-user.target lance d'autres services système essentiels, tels que NetworkManager (NetworkManager.service) ou D-Bus (dbus.service) et active une autre unité cible nommée basic.target.
| Niveau d'exécution | Unités de cible | Description |
|---|---|---|
0 | runlevel0.target, poweroff.target | Quitter et éteindre le système. |
1 | runlevel1.target, rescue.target | Installer un shell de secours. |
2 | runlevel2.target, multi-user.target | Installer un système multi-utilisateurs non graphique. |
3 | runlevel3.target, multi-user.target | Installer un système multi-utilisateurs non graphique. |
4 | runlevel4.target, multi-user.target | Installer un système multi-utilisateurs non graphique. |
5 | runlevel5.target, graphical.target | Installer un système graphique multi-utilisateurs. |
6 | runlevel6.target, reboot.target | Quitter et redémarrer le système. |
systemctl comme décrit dans la Tableau 9.7, « Comparaison des commandes SysV init avec systemctl » ainsi que dans les sections ci-dessous. Les commandes runlevel et telinit sont toujours disponibles dans le système et fonctionnent comme prévu, mais ne sont incluses que pour des raisons de compatibilité et doivent être évitées.
| Ancienne commande | Nouvelle commande | Description |
|---|---|---|
runlevel | systemctl list-units --type target | Répertorie les unités de cible actuellement chargées. |
telinit runlevel | systemctl isolate name.target | Modifie la cible actuelle. |
9.3.1. Afficher la cible par défaut Copier lienLien copié sur presse-papiers!
systemctl get-default
systemctl get-default
/etc/systemd/system/default.target et affiche le résultat. Pour obtenir des informations sur comment modifier la cible par défaut, veuillez consulter la Section 9.3.3, « Modifier la cible par défaut ». Pour obtenir des informations sur comment répertorier toutes les unités de cible actuellement chargées, veuillez consulter la Section 9.3.2, « Afficher la cible actuelle ».
Exemple 9.10. Afficher la cible par défaut
systemctl get-default
~]$ systemctl get-default
graphical.target
9.3.2. Afficher la cible actuelle Copier lienLien copié sur presse-papiers!
systemctl list-units --type target
systemctl list-units --type target
UNIT) suivi d'une note indiquant si l'unité a été chargée (LOAD), son état d'activation de haut niveau (ACTIVE) et de bas niveau (SUB), ainsi qu'une courte description (DESCRIPTION).
systemctl list-units affiche uniquement les unités actives. Si vous souhaitez afficher toutes les unités chargées, quel que soit leur état, veuillez exécuter cette commande avec l'option de ligne de commande --all ou -a :
systemctl list-units --type target --all
systemctl list-units --type target --all
Exemple 9.11. Afficher la cible actuelle
9.3.3. Modifier la cible par défaut Copier lienLien copié sur presse-papiers!
root :
systemctl set-default name.target
systemctl set-default name.target
multi-user). Cette commande remplace le fichier /etc/systemd/system/default.target par un lien symbolique pointant vers /usr/lib/systemd/system/name.target, où name est le nom de l'unité cible que vous souhaitez utiliser. Pour obtenir davantage d'informations sur la manière de modifier la cible actuelle, veuillez consulter la Section 9.3.4, « Modifier la cible actuelle ». Pour obtenir des informations sur la manière de répertorier toutes les unités de cible actuellement chargées, veuillez consulter la Section 9.3.2, « Afficher la cible actuelle ».
Exemple 9.12. Modifier la cible par défaut
multi-user.target par défaut, veuillez saisir la commande suivante dans une invite de shell en tant qu'utilisateur root :
systemctl set-default multi-user.target
~]# systemctl set-default multi-user.target
rm '/etc/systemd/system/default.target'
ln -s '/usr/lib/systemd/system/multi-user.target' '/etc/systemd/system/default.target'
9.3.4. Modifier la cible actuelle Copier lienLien copié sur presse-papiers!
root :
systemctl isolate name.target
systemctl isolate name.target
multi-user). Cette commande remplace l'unité de cible nommée name et toutes ses unités dépendantes, et arrête immédiatement toutes les autres. Pour obtenir des informations sur la manière de modifier la cible par défaut, veuillez consulter la Section 9.3.3, « Modifier la cible par défaut ». Pour obtenir des informations sur la manière de répertorier toutes les unités de cible actuellement chargées, veuillez consulter la Section 9.3.2, « Afficher la cible actuelle ».
Exemple 9.13. Modifier la cible actuelle
multi-user.target dans la session actuelle, veuillez saisir la commande suivante en tant qu'utilisateur root :
systemctl isolate multi-user.target
~]# systemctl isolate multi-user.target
9.3.5. Passer en mode de secours Copier lienLien copié sur presse-papiers!
root :
systemctl rescue
systemctl rescue
systemctl isolate rescue.target, mais elle envoie également un message informatif à tous les utilisateurs actuellement connectés au système. Pour empêcher Systemd d'envoyer ce message, veuillez exécuter cette commande avec l'option de ligne de commande --no-wall :
systemctl --no-wall rescue
systemctl --no-wall rescue
Exemple 9.14. Passer en mode de secours
root :
systemctl rescue
~]# systemctl rescue
Broadcast message from root@localhost on pts/0 (Fri 2013-10-25 18:23:15 CEST):
The system is going down to rescue mode NOW!
9.3.6. Passer en mode d'urgence Copier lienLien copié sur presse-papiers!
root :
systemctl emergency
systemctl emergency
systemctl isolate emergency.target, mais elle envoie également un message informatif à tous les utilisateurs actuellement connectés au système. Pour empêcher Systemd d'envoyer ce message, veuillez exécuter cette commande avec l'option de ligne de commande --no-wall :
systemctl --no-wall emergency
systemctl --no-wall emergency
Exemple 9.15. Passer en mode d'urgence
root :
systemctl --no-wall emergency
~]# systemctl --no-wall emergency