OS: Manjaro 19.1 (certainement)
systemd est le premier processus démon (PID: 1) à démarrer sur un système Linux. Démarre d'autres processus et devient le processus ancêtre de tous les processus. Il a également pour but de gérer d'autres processus démons (donc).
La commande systemctl est principalement utilisée pour étudier et manipuler systemd.
Lorsque vous exécutez la commande systemctl, une liste d'unités apparaîtra comme indiqué ci-dessous.
$ systemctl                  
UNIT                         LOAD   ACTIVE SUB     DESCRIPTION
sys-module-fuse.device       loaded active plugged /sys/module/fuse
-.mount                      loaded active mounted Root Mount
boot-efi.mount               loaded active mounted /boot/efi
systemd-journald.service     loaded active running Journal Service
systemd-logind.service       loaded active running Login Service
[email protected]            loaded failed failed  User Manager for UID 1000
...
Selon la page de manuel, la commande systemctl (= commande systemctl list-units) "affiche la liste des unités que systemd détient en mémoire".
Qu'est-ce qu'une unité?
--Toute ressource que systemd sait faire fonctionner et gérer s'appelle une unité. --Défini par un fichier de configuration appelé fichier d'unité.
Eh bien, en d'autres termes, c'est une unité d'objet gérée par systemd.
Par exemple, spécifiez l'unité comme indiqué ci-dessous et vérifiez son état.
$ systemctl status bluetooth.service
Le bluetooth.service ci-dessus est l'unité.
Une fois que vous obtenez un aperçu.
L'unité semble être, par exemple, service (.service), point de montage ( .mount), périphérique (.device), socket ( .socket). (Je ne comprends pas en détail ici.)
Le nom complet de l'unité est requis lors de l'utilisation de la commande systemctl.
En d'autres termes, c'est le précédent bluetooth.service.
Cependant, certaines règles peuvent utiliser des abréviations. Trois.
--Si vous omettez le suffixe, systemctl le comprendra comme .service. Ainsi, «bluetooth.service» peut être écrit comme «bluetooth».
--mount point est automatiquement interprété comme .mountʻunit. / home est égal à home.mount.  --device est également automatiquement interprété comme .deviceʻunit. / dev / sda2 est égal à dev-sda2.device.
Revenez à nouveau à la commande précédente. Le résultat de sortie est le suivant.
$ systemctl status bluetooth.service
● bluetooth.service - Bluetooth service
   Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2017-01-04 13:54:04 EST; 1 weeks 0 days ago
     Docs: man:bluetoothd(8)
 Main PID: 930 (bluetoothd)
   Status: "Running"
    Tasks: 1
   Memory: 648.0K
      CPU: 435ms
   CGroup: /system.slice/bluetooth.service
           └─930 /usr/lib/bluetooth/bluetoothd
Jan 12 10:46:45 example.com bluetoothd[8900]: Not enough free handles to register service
Jan 12 10:46:45 example.com bluetoothd[8900]: Current Time Service could not be registered
Jan 12 10:46:45 example.com bluetoothd[8900]: gatt-time-server: Input/output error (5)
La ligne Chargé indique «chargé» si l'unité est chargée en mémoire.
Les autres valeurs sont ʻerror, not-found, bad-setting, masked`.
De plus, le chemin du fichier d'unité et s'il est actuellement activé (s'il est démarré au démarrage) sont affichés entre parenthèses.
unit file
Voici le fichier d'unité. D'après le résultat de sortie précédent, il semble que bluetooth.service soit défini dans /usr/lib/systemd/system/bluetooth.service. (Lorsque vous regardez réellement le fichier, le contenu est étonnamment simple.)
En ce qui concerne le fichier d'unité, il semble y avoir une page de manuel, alors jetez-y un coup d'œil. (systemd.unit (5))
Il semble qu'il existe différentes directives composées de plusieurs sections.
Ceux-ci définissent probablement l'unité.
De plus, il y avait / usr / lib / systemd / system / * à l'endroit appelé System Unit Search Path.
Il semble que le fichier d'unité de l'unité bluetoooth.service ait été recherché à partir de ce répertoire.
Quoi qu'il en soit, j'ai trouvé qu'un fichier d'unité portant le même nom que l'unité était placé dans un répertoire spécifique et l'unité était définie dans ce fichier.
Maintenant que j'ai compris comment gérer les unités systemd, examinons des commandes spécifiques.
systemctl status <unit>
L'état d'exécution, le chemin du fichier de l'unité, le pid, le dernier journal, etc. sont affichés.
systemctl start <unit>
Démarre immédiatement.
systemctl stop <unit>
Arrêtez immédiatement.
systemctl enabled <unit>
Réglez pour activer. (Défini pour démarrer au moment du démarrage.)
systemd regarde le fichier d'unité dans un répertoire spécifique et gère l'unité d'opération, unit. Ceux-ci peuvent être gérés / manipulés par l'utilisateur avec la commande systemctl.
Jouons en voyant quel type d'unité fonctionne et en vérifiant l'état.
page de manuel systemctl
Arch Linux wiki https://wiki.archlinux.org/index.php/Systemd#Using_units
Understanding Systemd Units and Unit Files https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files
Wikipedia https://en.wikipedia.org/wiki/Systemd
Recommended Posts