Post

Aide-mémoire Systemd

Aide-mémoire Systemd

Systemd est le système et le gestionnaire de services modernes pour les systèmes d’exploitation Linux, remplaçant les systèmes d’initialisation traditionnels tels que System V et Upstart. Il est responsable de la gestion du démarrage du système, des services et des processus.

La commande systemctl est utilisée pour contrôler les unités système, y compris les services, les sockets, les minuteries et les cibles.

Commandes et options courantes de systemctl

systemctl services

Les noms de services typiques suivent une convention liée au logiciel qu’ils gèrent. Par exemple, nginx.service contrôle le serveur Web Nginx, tandis que ssh.service gère le serveur OpenSSH.

Pour vérifier l’état d’un service:

1
systemctl status <service-name>

Pour démarrer un service:

1
systemctl start <service-name>

Pour arrêter un service:

1
systemctl stop <service-name>

Pour relancer un service:

1
systemctl restart <service-name>

Pour recharger un service:

1
systemctl reload <service-name>

Pour activer un service au démarrage:

1
systemctl enable <service-name>

Pour désactiver un service au démarrage:

1
systemctl disable <service-name>

Pour vérifier si un service est activé ou désactivé:

1
systemctl is-enabled <service-name>

Pour afficher les journaux pour un service:

1
journalctl -u <service-name>

systemctl units

Une unité en système est une ressource qui gère le système. Les unités peuvent représenter des services, des sockets, des points de montage, des périphériques et d’autres ressources du système, chacun défini par un fichier de configuration correspondant.

Listing units

Pour lister toutes les unités actives:

1
systemctl list-units

Pour répertorier tous les fichiers unitaires installés:

1
systemctl list-unit-files

Pour énumérer toutes les unités défaillantes:

1
systemctl --failed

Pour filtrer des types d’unités spécifiques (p. ex., services):

1
systemctl list-units --type=service

Utilisation de motifs avec grep:

1
systemctl list-unit-files | grep disabled

Inspecting units

Pour voir le contenu d’un fichier unitaire:

1
systemctl cat <unit-name>

Pour montrer les propriétés d’une unité:

1
systemctl show <unit-name>

Pour énumérer les dépendances d’une unité:

1
systemctl list-dependencies <unit-name>

systemd timers

Les minuteurs système sont des fichiers unitaires qui déclenchent l’exécution de services à des heures ou des intervalles planifiés, remplaçant les tâches de cron traditionnelles.

Pour lister tous les minuteurs actifs:

1
systemctl list-timers

Pour vérifier les détails d’une minuterie:

1
systemctl status <timer-name>

Pour ajouter une nouvelle minuterie:

1
systemctl enable <timer-name>

Pour mettre en pause une minuterie:

1
systemctl stop <timer-name>

Pour supprimer une minuterie:

1
systemctl disable <timer-name>

Etat système

L’état du système dans systemd fait référence à l’état de santé et de fonctionnement global du système, y compris s’il est démarré correctement, fonctionnant correctement ou rencontrant des erreurs.

Pour voir l’état actuel du système:

1
systemctl is-system-running

Pour redémarrer le système:

1
systemctl reboot

Pour éteindre le système:

1
systemctl poweroff

Pour suspendre le système:

1
systemctl suspend

Pour hiberner le système:

1
systemctl hibernate

Commandes et options courantes de journalctl

Pour afficher tous les journaux (affiche l’ensemble du journal système):

1
journalctl

Journaux processus démarrage

Pour afficher les journaux liés au processus de démarrage du système:

1
journalctl -b

Pour afficher les journaux de la chaussure précédente:

1
journalctl -b -1

Pour répertorier les journaux de démarrage précédents:

1
journalctl --list-boots

Journaux spécifiques date et heure données

Pour suivre les journaux en temps réel (tail -f pour afficher en permanence de nouvelles entrées de journal):

1
journalctl -f

Pour afficher les journaux à partir d’une durée relative (par exemple, 1 dernière heure):

1
journalctl --since "1 hour ago"

Pour afficher les journaux des 30 dernières minutes:

1
journalctl --since "30 minutes ago"

Pour afficher les journaux de la semaine dernière:

1
journalctl --since "7 days ago"

Afficher les journaux depuis une date et une heure spécifiques:

1
journalctl --since "2025-03-15 08:00:00"

Pour afficher les journaux jusqu’à une date et une heure spécifiques:

1
journalctl --until "2025-03-15 18:00:00"

Pour afficher les journaux pour une plage de temps spécifique:

1
journalctl --since "2025-03-15 12:00:00" --until "2025-03-15 14:00:00"

Pour afficher les journaux d’un jour spécifique:

1
journalctl --since "2025-03-14" --until "2025-03-14 23:59:59"

Pour voir les journaux d’hier (à partir de minuit de la veille):

1
journalctl --since "yesterday"

Journaux spécifiques applications

Pour filtrer les journaux pour une unité spécifique, par ex. nginx.service:

1
journalctl -u <unit-name>

Pour afficher les journaux du noyau Linux:

1
journalctl -k

Pour afficher les journaux pour un processus utilisateur spécifique, ID utilisateur 1000:

1
journalctl _UID=1000

Pour afficher les journaux pour un exécutable spécifique:

1
journalctl /usr/bin/your_program

Journaux erreurs et alertes

Afficher les journaux avec filtrage de priorité (logs avec la priorité 3 (erreurs) et plus (plus critique)):

1
journalctl -p 3

ou

1
journalctl -p err

Pour afficher uniquement les messages d’erreur, critiques et d’alerte:

1
journalctl -p err..alert

Journaux mainenance

Pour supprimer les journaux de plus de 7 jours:

1
sudo journalctl --vacuum-time=7d

Pour effacer les journaux (limite la taille du journal à 500MB):

1
sudo journalctl --vacuum-size=500M

Pour supprimer les journaux plus anciens qu’une date précise (p. ex., avant le 1er mars 2025):

1
sudo journalctl --vacuum-time="2025-03-01"

Pour effacer les journaux pour un service spécifique (par exemple, nginx):

1
sudo journalctl --vacuum-size=500M -u nginx.service

Pour rincer tous les journaux de journal (DANGEROUS – supprime définitivement tous les journaux!):

1
2
3
sudo journalctl --rotate  

sudo journalctl --vacuum-time=1s

Pour supprimer manuellement tous les journaux et redémarrer systemd-journald:

1
2
sudo rm -rf /var/log/journal/*
sudo systemctl restart systemd-journald

FAQ

Comment puis-je vérifier l’état d’un service dans systemd?
Utiliser systemctl status service-name pour vérifier l’état actuel et les journaux d’un service système.

Comment puis-je redémarrer une systemd unit en panne?
Utiliser systemctl restart service-name pour relancer un service. Vérifier les journaux avec journalctl -u service-name

Comment puis-je répertorier toutes les systemd unit?
Exécuter systemctl list-units pour voir les unités actives ou systemctl list-unit-files pour tous les fichiers unitaires installés.

Qu’est-ce qu’un systemd timer et comment puis-je l’utiliser?
Un systemd timer est une unité qui déclenche l’exécution du service à des moments spécifiques. Utiliser systemctl list-timers pour voir les minuteurs actifs.

Comment puis-je désactiver un service dès le démarrage?
Exécuter systemctl disable service-name pour désactiver le service au démarrage.

Cet article est sous licence CC BY 4.0 par l'auteur.