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.
