Gérer les services avec systemctl, consulter et filtrer les journaux système avec journalctl sous Debian 13.
Debian 13 installé avec accès root ou sudo. Connaître les commandes de base Linux.
systemd est le gestionnaire de système et de services de Debian (et la plupart des distributions modernes). Il est le premier processus lancé au démarrage (PID 1) et gère tous les services, montages, périphériques et cibles de démarrage.
| Concept | Explication | Exemple |
|---|---|---|
| Unit | Unité de configuration systemd | ssh.service, var-log.mount, network.target |
| Service | Type d'unit qui représente un service/démon | apache2.service, mysql.service |
| Target | Groupe d'units (remplace les runlevels) | multi-user.target (équiv. runlevel 3) |
| Socket | Unit d'activation par socket réseau | cups.socket |
| Timer | Planification (alternative à cron) | apt-daily.timer |
| Commande | Action | Exemple |
|---|---|---|
| systemctl status | Affiche l'état d'un service | systemctl status ssh |
| systemctl start | Démarre un service | sudo systemctl start apache2 |
| systemctl stop | Arrête un service | sudo systemctl stop apache2 |
| systemctl restart | Redémarre un service (stop + start) | sudo systemctl restart apache2 |
| systemctl reload | Recharge la config sans interruption | sudo systemctl reload apache2 |
| systemctl enable | Active le démarrage automatique au boot | sudo systemctl enable ssh |
| systemctl disable | Désactive le démarrage automatique | sudo systemctl disable bluetooth |
| systemctl is-active | Vérifie si un service est actif | systemctl is-active ssh |
| systemctl is-enabled | Vérifie si un service démarre au boot | systemctl is-enabled ssh |
| systemctl list-units | Liste toutes les units actives | systemctl list-units --type=service |
| systemctl daemon-reload | Recharge la config systemd (après modif .service) | sudo systemctl daemon-reload |
# Exemple complet : installer, activer et vérifier nginx
sudo apt install nginx -y
sudo systemctl enable --now nginx # active ET démarre en une commande
systemctl status nginx # voir l'état détaillé
journalctl est l'outil de consultation du journal systemd (stocké en binaire dans /var/log/journal/).
| Commande | Utilité |
|---|---|
| journalctl | Affiche tout le journal (du plus ancien au plus récent) |
| journalctl -e | Affiche la fin du journal (dernières lignes) |
| journalctl -f | Suit le journal en temps réel (comme tail -f) |
| journalctl -u ssh | Logs d'un service spécifique |
| journalctl -u ssh -f | Logs en temps réel d'un service |
| journalctl --since '1 hour ago' | Logs de la dernière heure |
| journalctl --since '2026-06-01' | Logs depuis une date |
| journalctl -p err | Logs de niveau erreur uniquement |
| journalctl -p warning -u apache2 | Avertissements du service apache2 |
| journalctl -b | Logs du démarrage actuel uniquement |
| journalctl -b -1 | Logs du démarrage précédent |
| journalctl -n 50 | 50 dernières lignes |
| journalctl --disk-usage | Espace utilisé par le journal |
# Exemples pratiques de filtrage
sudo journalctl -u ssh --since "2026-06-01" --until "2026-06-10"
sudo journalctl -p err -b # erreurs du démarrage actuel
sudo journalctl -f -u apache2 # suivre les logs apache en temps réel
| Niveau | Valeur | Signification |
|---|---|---|
| emerg | 0 | Système inutilisable |
| alert | 1 | Action immédiate requise |
| crit | 2 | Condition critique |
| err | 3 | Erreur |
| warning | 4 | Avertissement |
| notice | 5 | Condition normale mais significative |
| info | 6 | Message informatif |
| debug | 7 | Débogage |
Pour qu'un script ou une application démarre automatiquement avec le système, on crée un fichier .service :
sudo nano /etc/systemd/system/monapp.service
[Unit] Description=Mon application personnalisée After=network.target [Service] Type=simple User=www-data WorkingDirectory=/opt/monapp ExecStart=/usr/bin/python3 /opt/monapp/main.py Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target
# Après création du fichier .service
sudo systemctl daemon-reload # recharger la config systemd
sudo systemctl enable --now monapp # activer et démarrer
systemctl status monapp # vérifier
| Directive | Section | Rôle |
|---|---|---|
| Description | [Unit] | Nom lisible du service |
| After | [Unit] | Démarrer après ces units (dépendances) |
| Type | [Service] | simple (processus direct), forking, oneshot |
| User | [Service] | Utilisateur sous lequel tourne le service |
| ExecStart | [Service] | Commande de démarrage |
| Restart | [Service] | Politique de redémarrage automatique |
| WantedBy | [Install] | Target à laquelle appartient le service |
# Temps total de démarrage systemd-analyze # Détail par service (du plus lent au plus rapide) systemd-analyze blame # Graphique SVG du démarrage systemd-analyze plot > /tmp/boot.svg
✅ Réponse : systemctl enable --now
✅ Réponse : journalctl -f -u ssh
✅ Réponse : systemctl daemon-reload
✅ Réponse : 1
✅ Réponse : journalctl -p err