systemd est le système d'initialisation et le gestionnaire de services le plus utilisé dans les distributions Linux modernes (Ubuntu, Debian, Fedora, CentOS, etc.). Il permet de démarrer, arrêter, redémarrer et gérer les services (daemons) du système.
Dans cette leçon, nous allons apprendre à utiliser la commande systemctl pour gérer les services.
Un service (ou daemon) est un programme qui tourne en arrière-plan et qui est démarré automatiquement au démarrage du système. Exemples :
- nginx : serveur web
- sshd : serveur SSH
- cron : gestionnaire de tâches planifiées
- systemd-logind : gestion des connexions utilisateur
Les cibles (targets) sont des groupes de services qui définissent un état du système. Les plus courantes :
- multi-user.target : système multi-utilisateur sans interface graphique
- graphical.target : système avec interface graphique
- rescue.target : mode rescue (mode mono-utilisateur)
- poweroff.target : arrêt du système
# Voir le statut d'un service spécifique
sudo systemctl status nginx
# Statut sans les détails (plus concis)
sudo systemctl is-active nginx
# Vérifier si un service est activé au démarrage
sudo systemctl is-enabled nginx
# Démarrer un service
sudo systemctl start nginx
# Arrêter un service
sudo systemctl stop nginx
# Redémarrer un service (arrêt + démarrage)
sudo systemctl restart nginx
# Recharger la configuration sans arrêter le service
sudo systemctl reload nginx
# Activer un service au démarrage (démarrage automatique)
sudo systemctl enable nginx
# Désactiver un service au démarrage
sudo systemctl disable nginx
# Activer et démarrer immédiatement
sudo systemctl enable --now nginx
# Lister tous les services actifs
systemctl list-units --type=service
# Lister tous les services (actifs et inactifs)
systemctl list-units --type=service --all
# Lister les services qui ont échoué
systemctl --failed --type=service
# Voir les journaux d'un service (logs)
sudo journalctl -u nginx
# Suivre les journaux en temps réel
sudo journalctl -u nginx -f
# Voir les journaux depuis le dernier démarrage
sudo journalctl -u nginx --since today
# Vérifier le statut de SSH
sudo systemctl status ssh
# Démarrer SSH
sudo systemctl start ssh
# Activer SSH au démarrage
sudo systemctl enable ssh
# Voir les journaux SSH
sudo journalctl -u ssh
# Statut de cron
sudo systemctl status cron
# Redémarrer cron pour prendre en compte les changements
sudo systemctl restart cron
# Vérifier si cron est actif
systemctl is-active cron
# Voir le statut détaillé
sudo systemctl status nginx
# Voir les dernières lignes de journal
sudo journalctl -xe -u nginx
# Voir la configuration du service
sudo systemctl cat nginx
Vérifier le statut de votre service cron :
bash
systemctl status cron
Activer le service cron au démarrage :
bash
sudo systemctl enable cron
Créer un script de test dans /tmp/test_service.sh :
bash
#!/bin/bash
echo "Mon script de test" >> /tmp/test.log
Créer un service systemd dans /etc/systemd/system/test.service :
```bash
[Unit]
Description=Mon service de test
[Service] Type=oneshot ExecStart=/tmp/test_service.sh
[Install] WantedBy=multi-user.target ```
bash
sudo systemctl daemon-reload
sudo systemctl start test
cat /tmp/test.log
sudo systemctl enable testsystemctl est la commande principale pour gérer les servicessystemctl start/stop [service]systemctl restart [service]systemctl status [service]systemctl enable [service]systemctl disable [service]journalctl -u [service]systemctl list-units --type=serviceLa maîtrise de systemd est essentielle pour administrer un système Linux moderne. Les commandes vues dans cette leçon vous permettront de gérer efficacement les services de votre système.