GNU/Linux >> Tutoriels Linux >  >> Linux

5 raisons pour lesquelles les administrateurs système adorent systemd

Comme le savent les administrateurs système, il se passe beaucoup de choses sur les ordinateurs modernes. Les applications s'exécutent en arrière-plan, les événements automatisés attendent d'être déclenchés à un certain moment, les fichiers journaux sont écrits, les rapports d'état sont fournis. Traditionnellement, ces processus disparates ont été gérés et surveillés avec un ensemble d'outils Unix avec un grand effet et une grande efficacité. Cependant, les ordinateurs modernes sont variés, avec des services locaux s'exécutant parallèlement à des applications conteneurisées, un accès facile aux clouds et aux clusters sur lesquels ils s'exécutent, des processus en temps réel et plus de données à traiter que jamais.

Avoir une méthode unifiée pour les gérer est une attente pour les utilisateurs et un luxe utile pour les administrateurs système occupés. Pour cette tâche non triviale, le démon système ou systemd , a été développé et rapidement adopté par toutes les principales distributions Linux.

En savoir plus sur les administrateurs système

  • Activer le blog Sysadmin
  • L'entreprise automatisée :un guide pour gérer l'informatique avec l'automatisation
  • Livre électronique :Automatisation Ansible pour les administrateurs système
  • Témoignages du terrain :guide de l'administrateur système sur l'automatisation informatique
  • eBook :Un guide de Kubernetes pour les SRE et les administrateurs système
  • Derniers articles sur l'administrateur système

Bien sûr, systemd n'est pas le seul moyen de gérer un système Linux. Il existe de nombreux systèmes d'initialisation alternatifs, notamment sysvinit, OpenRC, runit, s6 et même BusyBox, mais systemd traite Linux comme un ensemble de données unifié, destiné à être manipulé et interrogé de manière cohérente avec des outils robustes. Pour un administrateur système occupé et de nombreux utilisateurs, la rapidité et la simplicité de systemd sont des caractéristiques importantes. Voici cinq raisons.

Gestion du démarrage

Le démarrage d'un ordinateur Linux peut être un événement étonnamment rare, si vous le souhaitez. Certes, dans le monde des serveurs, les temps de disponibilité se comptent souvent en années plutôt que des mois ou des semaines. Les ordinateurs portables et les ordinateurs de bureau ont tendance à être arrêtés et démarrés assez fréquemment, bien que même ceux-ci soient aussi susceptibles d'être suspendus ou mis en veille prolongée qu'ils doivent être arrêtés. Dans tous les cas, le temps écoulé depuis l'événement de démarrage le plus récent peut servir en quelque sorte de gestionnaire de session pour un bilan de santé de l'ordinateur. C'est un moyen utile de limiter les données que vous consultez lorsque vous surveillez votre système ou diagnostiquez des problèmes.

Dans le cas probable où vous ne vous souviendriez pas de la dernière fois que vous avez démarré votre ordinateur, vous pouvez répertorier les sessions de démarrage avec l'outil de journalisation de systemd, journalctl :

$ journalctl --list-boots
-42 7fe7c3... Fri 2020-12-04 05:13:59 - Wed 2020-12-16 16:01:23
-41 332e99... Wed 2020-12-16 20:07:39 - Fri 2020-12-18 22:08:13
[...]
-1 e0fe5f... Mon 2021-03-29 20:47:46 - Mon 2021-03-29 21:59:29
 0 37fbe4... Tue 2021-03-30 04:46:13 - Tue 2021-03-30 10:42:08

Les dernières sessions de démarrage apparaissent en bas de la liste, vous pouvez donc diriger la sortie vers tail pour seulement les dernières bottes.

Les nombres à gauche (42, 41, 1 et 0 dans cet exemple) sont des numéros d'index pour chaque session de démarrage. En d'autres termes, pour afficher les journaux d'une session de démarrage spécifique uniquement, vous pouvez utiliser son numéro d'index comme référence.

Révisions des journaux

L'examen des journaux est une méthode importante pour extrapoler des informations sur votre système. Les journaux fournissent un historique d'une grande partie de l'activité de votre ordinateur sans votre supervision directe. Vous pouvez voir quand les services ont été lancés, quand les travaux chronométrés ont été exécutés, quels services s'exécutent en arrière-plan, quelles activités ont échoué, etc. L'une des premières étapes de dépannage les plus courantes consiste à examiner les journaux, ce qui est facile à faire avec journalctl :

$ journalctl --pager-end

Le --pager-end (ou -e pour faire court) l'option démarre votre vue des journaux à la fin du journalctl sortie, vous devez donc faire défiler vers le haut pour voir les événements qui se sont produits plus tôt.

Systemd maintient un "catalogue" d'erreurs et de messages rempli d'enregistrements d'erreurs, de solutions possibles, de pointeurs vers des forums de support et de documentation pour développeurs. Cela peut fournir un contexte important à un événement de journal, qui pourrait autrement être un point déroutant dans une mer de messages, ou pire, pourrait passer entièrement inaperçu. Pour intégrer les messages d'erreur avec un texte explicatif, vous pouvez utiliser le --catalog (ou -x pour faire court) option :

$ journalctl --pager-end --catalog

Pour limiter davantage la sortie du journal que vous devez parcourir, vous pouvez spécifier la session de démarrage pour laquelle vous souhaitez voir les journaux. Étant donné que chaque session de démarrage est indexée, vous pouvez spécifier certaines sessions avec le --boot option et afficher uniquement les journaux qui s'y appliquent :

$ journalctl --pager-end --catalog --boot 42

Vous pouvez également voir les journaux d'une unité systemd spécifique. Par exemple, pour résoudre un problème avec votre service Secure Shell (SSH), vous pouvez spécifier --unit sshd pour voir uniquement les logs qui s'appliquent au sshd démon :

$ journalctl --pager-end \
--catalog --boot 42 \
--unit sshd

Gestion des services

La première tâche de systemd consiste à démarrer votre ordinateur, et il le fait généralement rapidement, efficacement et efficacement. Mais la tâche qui n'est jamais terminée est la gestion des services. De par sa conception, systemd garantit que les services que vous souhaitez exécuter démarrent et continuent de s'exécuter pendant votre session. C'est bien robuste, car en théorie, même un service en panne peut être redémarré sans votre intervention.

Votre interface pour aider systemd à gérer les services est le systemctl commande. Avec lui, vous pouvez visualiser les fichiers unitaires qui définissent un service :

$ systemctl cat sshd
# /usr/lib/systemd/system/sshd.service
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.target
Wants=sshd-keygen.target

[Service]
Type=notify
EnvironmentFile=-/etc/crypto-policies/back-ends/opensshserver.config
EnvironmentFile=-/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS $CRYPTO_POLICY
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

La plupart des fichiers d'unité existent dans /usr/lib/systemd/system/ mais, comme pour de nombreuses configurations importantes, nous vous encourageons à les modifier avec des modifications locales. Il existe également une interface pour cela :

$ systemctl edit sshd

Vous pouvez voir si un service est actuellement actif :

$ systemctl is-active sshd
active
$ systemctl is-active foo
inactive

De même, vous pouvez voir si un service a échoué avec is-failed .

Le démarrage et l'arrêt des services sont bien intuitifs :

$ systemctl stop sshd
$ systemctl start sshd

Et permettre à un service de démarrer au démarrage est simple :

$ systemctl enable sshd

Ajoutez le --now option permettant à un service de démarrer au démarrage ou de le démarrer pour votre session en cours.

Minuteurs

Il y a longtemps, lorsque vous vouliez automatiser une tâche sous Linux, l'outil canonique pour le travail était cron . Il y a toujours une place pour la commande cron, mais il existe également des alternatives intéressantes. Par exemple, le anacron command est un système polyvalent de type cron capable d'exécuter des tâches qui, autrement, auraient été manquées pendant les temps d'arrêt.

Les événements planifiés ne sont guère plus que des services activés à un moment précis, donc systemd gère une fonction de type cron appelée minuteries. Vous pouvez répertorier les minuteurs actifs :

$ systemctl list-timers
NEXT                          LEFT      
Tue 2021-03-30 12:37:54 NZDT  16min left [...]
Wed 2021-03-31 00:00:00 NZDT  11h left [...]
Wed 2021-03-31 06:42:02 NZDT  18h left [...]

3 timers listed.
Pass --all to see loaded but inactive timers, too.

Vous pouvez activer un minuteur de la même manière que vous activez un service :

$ systemctl enable myMonitor.timer

Cibles

Les cibles sont le dernier composant majeur de la matrice systemd. Une cible est définie par un fichier unité, comme les services et les temporisateurs. Les cibles peuvent également être démarrées et activées de la même manière. Ce qui rend les cibles uniques, c'est qu'elles regroupent d'autres fichiers d'unité d'une manière arbitrairement significative. Par exemple, vous souhaiterez peut-être démarrer sur une console texte au lieu d'un bureau graphique, de sorte que le multi-user cible existe. Cependant, le multi-user la cible n'est que le graphical cible sans les fichiers d'unité de bureau comme dépendances.

En bref, les cibles vous permettent de collecter facilement des services, des minuteurs et même d'autres cibles pour représenter un état prévu pour votre machine.

En fait, dans systemd, un redémarrage, une mise hors tension ou une action d'arrêt n'est qu'une autre cible.

Vous pouvez lister toutes les cibles disponibles en utilisant le list-unit-files option, en la contraignant avec le --type option définie sur target :

$ systemctl list-unit-files --type target

Prendre le contrôle avec systemd

Linux moderne utilise systemd pour la gestion des services et l'introspection des journaux. Il fournit tout, des systèmes Linux personnels aux serveurs d'entreprise, avec un mécanisme moderne de surveillance et de maintenance facile. Plus vous l'utilisez, plus systemd devient confortablement prévisible et intuitif, et plus vous découvrez comment des parties disparates de votre système sont interconnectées.

Pour mieux vous familiariser avec systemd, vous devez l'utiliser. Et pour vous familiariser avec son utilisation, téléchargez notre aide-mémoire et consultez-le souvent.


Linux
  1. 10 raisons d'aimer Linux en 2021

  2. 5 raisons pour lesquelles j'aime coder sous Linux

  3. Comment :gérer les journaux système avec Journalctl

  4. rediriger les journaux du service systemd vers un fichier

  5. Dépendances systemd et ordre de démarrage

systemd pour autoriser le retour automatique à un noyau plus ancien en cas d'échec de démarrage

Comment exécuter un script au démarrage dans Debian 11

Comment j'ai appris à arrêter de m'inquiéter et à aimer systemd

Comment effacer les journaux de journal Systemd

Comment utiliser journalctl pour afficher et manipuler les journaux Systemd

Journalctl :comment lire et modifier les journaux Systemd