Systemd Essentials: Utilisation des services, des unités et du journal

introduction

Ces dernières années, les distributions Linux sont passées de plus en plus des systèmes init à + ​​systemd +. La suite d’outils + systemd + fournit un modèle d’initialisation rapide et flexible pour la gestion d’une machine entière à partir du démarrage.

Dans ce guide, nous allons vous présenter rapidement les commandes les plus importantes que vous souhaitez connaître pour la gestion d’un serveur compatible + systemd +. Celles-ci devraient fonctionner sur tout serveur qui implémente + systemd + (toute version de système d’exploitation égale ou supérieure à Ubuntu 15.04, Debian 8, CentOS 7, Fedora 15). Commençons.

Gestion de base de l’unité

L’objet de base que + systemd + gère et sur lequel il agit est une« unité ». Les unités peuvent être de plusieurs types, mais le type le plus courant est un «service» (indiqué par un fichier unité se terminant par + .service +). Pour gérer les services sur un serveur activé + systemd +, notre outil principal est la commande + systemctl +.

Toutes les commandes système init normales ont des actions équivalentes avec la commande + systemctl +. Nous utiliserons l’unité + nginx.service pour la démonstration (vous devrez installer Nginx avec votre gestionnaire de paquets pour obtenir ce fichier de service).

Par exemple, nous pouvons démarrer le service en tapant:

sudo systemctl start nginx.service

Nous pouvons l’arrêter à nouveau en tapant:

sudo systemctl stop nginx.service

Pour redémarrer le service, nous pouvons taper:

sudo systemctl restart nginx.service

Pour tenter de recharger le service sans interrompre les fonctionnalités normales, nous pouvons taper:

sudo systemctl reload nginx.service

Activer ou désactiver des unités

Par défaut, la plupart des fichiers unitaires + systemd + ne sont pas démarrés automatiquement au démarrage. Pour configurer cette fonctionnalité, vous devez «activer» l’appareil. Cela le relie à une certaine «cible» de démarrage, ce qui le déclenche au démarrage de cette cible.

Pour permettre à un service de démarrer automatiquement au démarrage, tapez:

sudo systemctl enable nginx.service

Si vous souhaitez désactiver à nouveau le service, tapez:

sudo systemctl disable nginx.service

Obtenir un aperçu de l’état du système

Il y a beaucoup d’informations que nous pouvons extraire d’un serveur + systemd + pour avoir un aperçu de l’état du système.

Par exemple, pour obtenir tous les fichiers d’unités que + systemd + a répertoriés comme 'actifs', tapez (vous pouvez en fait laisser de côté le + list-units + car il s’agit du comportement + systemctl + par défaut):

systemctl list-units

Pour lister toutes les unités que + systemd + a chargé ou tenté de charger en mémoire, y compris celles qui ne sont pas actuellement actives, ajoutez le commutateur + - all +:

systemctl list-units --all

Pour lister toutes les unités installées sur le système, y compris celles que + systemd + n’a pas essayé de charger en mémoire, tapez:

systemctl list-unit-files

Affichage des informations de base du journal

Un composant + systemd + appelé + journald + collecte et gère les écritures de journal de toutes les parties du système. Il s’agit essentiellement de journaliser les informations provenant des applications et du noyau.

Pour voir toutes les entrées du journal, en commençant par l’entrée la plus ancienne, tapez:

journalctl

Par défaut, cela vous montrera les entrées des bottes actuelle et précédente si + journald + est configuré pour sauvegarder les enregistrements de démarrage précédents. Certaines distributions l’activent par défaut, d’autres pas (pour cela, éditez le fichier + / etc / systemd / journald.conf + et réglez l’option + Storage = + sur «persistant» ou créez le fichier persistant). répertoire en tapant + sudo mkdir -p / var / log / journal +).

Si vous souhaitez uniquement afficher les entrées de journal du démarrage actuel, ajoutez l’indicateur + -b +:

journalctl -b

Pour afficher uniquement les messages du noyau, tels que ceux généralement représentés par + dmesg +, vous pouvez utiliser l’indicateur + -k +:

journalctl -k

Encore une fois, vous pouvez limiter cela uniquement au démarrage actuel en ajoutant l’indicateur + -b +:

journalctl -k -b

Interrogation des états d’unité et des journaux

Bien que les commandes ci-dessus vous aient donné accès à l’état général du système, vous pouvez également obtenir des informations sur l’état des unités individuelles.

Pour avoir un aperçu de l’état actuel d’une unité, vous pouvez utiliser l’option + status + avec la commande + systemctl +. Cela vous indiquera si l’unité est active, des informations sur le processus et les dernières entrées de journal:

systemctl status nginx.service

Pour voir toutes les entrées de journal de l’unité en question, donnez l’option + -u + avec le nom de l’unité à la commande + journalctl +:

journalctl -u nginx.service

Comme toujours, vous pouvez limiter les entrées au démarrage actuel en ajoutant l’indicateur + -b +:

journalctl -b -u nginx.service

Inspection des unités et des fichiers d’unités

A présent, vous savez comment modifier l’état d’une unité en la démarrant ou en l’arrêtant, et vous pouvez afficher les informations sur l’état et le journal pour avoir une idée de ce qui se passe avec le processus. Cependant, nous n’avons pas encore vu comment inspecter d’autres aspects des unités et des fichiers d’unités.

Un fichier d’unité contient les paramètres que + systemd + utilise pour gérer et exécuter une unité. Pour voir le contenu complet d’un fichier d’unité, tapez:

systemctl cat nginx.service

Pour voir l’arbre de dépendance d’une unité (les unités + systemd + tenteront de s’activer lors du démarrage de l’unité), tapez:

systemctl list-dependencies nginx.service

Cela montrera les unités dépendantes, avec + cibles + étendues récursivement. Pour développer toutes les unités dépendantes de manière récursive, passez l’indicateur + - all +:

systemctl list-dependencies --all nginx.service

Enfin, pour voir les détails de bas niveau des réglages de l’unité sur le système, vous pouvez utiliser l’option + show +:

systemctl show nginx.service

Cela vous donnera la valeur de chaque paramètre géré par + systemd +.

Modification des fichiers d’unité

Si vous devez modifier un fichier unité, + systemd + vous permet d’apporter des modifications à partir de la commande + systemctl + elle-même, de sorte que vous n’ayez pas à vous rendre à l’emplacement réel du disque.

Pour ajouter un extrait de fichier d’unité, qui peut être utilisé pour ajouter ou remplacer des paramètres dans le fichier d’unité par défaut, appelez simplement l’option + edit + de l’unité:

sudo systemctl edit nginx.service

Si vous préférez modifier tout le contenu du fichier d’unité au lieu de créer un extrait de code, passez l’indicateur + - full +:

sudo systemctl edit --full nginx.service

Après avoir modifié un fichier unité, vous devez recharger le processus + systemd + lui-même pour récupérer vos modifications:

sudo systemctl daemon-reload

Utilisation de cibles (niveaux d’exécution)

Une autre fonction d’un système init est de faire passer le serveur lui-même entre différents états. Les systèmes init traditionnels désignent généralement ces niveaux par «niveaux d’exécution», ce qui permet au système de ne figurer que dans un niveau d’exécution à la fois.

Dans + systemd +, les «cibles» sont utilisées à la place. Les cibles sont essentiellement des points de synchronisation que le serveur peut utiliser pour amener le serveur dans un état spécifique. Les fichiers de service et autres fichiers d’unité peuvent être liés à une cible et plusieurs cibles peuvent être actives en même temps.

Pour voir toutes les cibles disponibles sur votre système, tapez:

systemctl list-unit-files --type=target

Pour afficher la cible par défaut que + systemd + essaie d’atteindre au démarrage (qui à son tour démarre tous les fichiers d’unité qui constituent l’arbre de dépendance de cette cible), tapez:

systemctl get-default

Vous pouvez changer la cible par défaut qui sera utilisée au démarrage en utilisant l’option + set-default +:

sudo systemctl set-default multi-user.target

Pour voir quelles unités sont liées à une cible, vous pouvez taper:

systemctl list-dependencies multi-user.target

Vous pouvez modifier l’état du système pour passer d’une cible à l’autre avec l’option + isolate +. Cela arrêtera toutes les unités qui ne sont pas liées à la cible spécifiée. Assurez-vous que la cible que vous isolez n’arrête aucun service essentiel:

sudo systemctl isolate multi-user.target

Arrêt ou redémarrage du serveur

Des raccourcis sont disponibles pour certains des principaux états vers lesquels un système peut passer. Par exemple, pour éteindre votre serveur, vous pouvez taper:

sudo systemctl poweroff

Si vous souhaitez redémarrer le système, vous pouvez le faire en tapant:

sudo systemctl reboot

Vous pouvez démarrer en mode de secours en tapant:

sudo systemctl rescue

Notez que la plupart des systèmes d’exploitation incluent des alias traditionnels pour ces opérations afin que vous puissiez simplement taper + sudo poweroff + ou + sudo reboot + sans le + systemctl +. Cependant, il n’est pas garanti que cela soit configuré sur tous les systèmes.

Prochaines étapes

A présent, vous devez connaître les bases de la gestion d’un serveur utilisant + systemd +. Cependant, il reste encore beaucoup à apprendre à mesure que vos besoins se développent. Vous trouverez ci-dessous des liens vers des guides contenant des informations plus détaillées sur certains des composants abordés dans ce guide:

En apprenant à exploiter les atouts de votre système init, vous pouvez contrôler l’état de vos machines et gérer plus facilement vos services et processus.

Related