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
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
graphical.target
9.3.2. Afficher la cible actuelle
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
Exemple 9.11. Afficher la cible actuelle
~]$ systemctl list-units --type target
UNIT LOAD ACTIVE SUB DESCRIPTION
basic.target loaded active active Basic System
cryptsetup.target loaded active active 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.target loaded active active Network
paths.target loaded active active Paths
remote-fs.target loaded active active Remote File Systems
sockets.target loaded active active Sockets
sound.target loaded active active Sound Card
spice-vdagentd.target loaded active active Agent daemon for Spice guests
swap.target loaded active active Swap
sysinit.target loaded active active System Initialization
time-sync.target loaded active active System Time Synchronized
timers.target loaded active active Timers
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.
17 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.
9.3.3. Modifier la cible par défaut
root
:
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
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
root
:
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
9.3.5. Passer en mode de secours
root
:
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
Exemple 9.14. Passer en mode de secours
root
:
~]# 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
root
:
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
Exemple 9.15. Passer en mode d'urgence
root
:
~]# systemctl --no-wall emergency