Lab 8.1 - Gestion des Services systemd
Objectifs
À la fin de ce lab, vous serez capable de:
- Utiliser systemctl pour gérer les services
- Comprendre les états des services
- Démarrer, arrêter, redémarrer des services
- Activer/désactiver les services au démarrage
- Voir les logs des services
Prérequis
- Ubuntu 24.04 installé
- Accès sudo
- Terminal ouvert
Exercice 1: Commandes de Base
Étape 1: Voir l'État d'un Service
# État d'un service
systemctl status sshd
# ou
systemctl status ssh
# État court
systemctl is-active sshd
systemctl is-enabled sshd
systemctl is-failed sshd
Étape 2: Lister les Services
# Tous les services
systemctl list-units --type=service
# Services actifs
systemctl list-units --type=service --state=running
# Services inactifs
systemctl list-units --type=service --state=inactive
# Services échoués
systemctl list-units --type=service --state=failed
Exercice 2: Contrôle des Services
Étape 1: Démarrer/Arrêter
# Démarrer un service
sudo systemctl start sshd
# Arrêter un service
sudo systemctl stop sshd
# Redémarrer
sudo systemctl restart sshd
# Recharger configuration (si supporté)
sudo systemctl reload sshd
Étape 2: Activer au Démarrage
# Activer (démarrage automatique)
sudo systemctl enable sshd
# Désactiver
sudo systemctl disable sshd
# Activer et démarrer
sudo systemctl enable --now sshd
Étape 3: Masquer un Service
# Masquer (empêche démarrage manuel aussi)
sudo systemctl mask sshd
# Démasquer
sudo systemctl unmask sshd
Exercice 3: Logs des Services
Étape 1: journalctl
# Logs d'un service
sudo journalctl -u sshd
# Dernières lignes
sudo journalctl -u sshd -n 50
# Suivre en temps réel
sudo journalctl -u sshd -f
# Logs depuis aujourd'hui
sudo journalctl -u sshd --since today
# Logs d'une période
sudo journalctl -u sshd --since "2024-12-01" --until "2024-12-31"
Étape 2: Niveaux de Log
# Par priorité
sudo journalctl -u sshd -p err
sudo journalctl -u sshd -p warning
# Combinaisons
sudo journalctl -u sshd -p err --since "1 hour ago"
Exercice 4: Services Système
Étape 1: Services Essentiels
# Voir les services système
systemctl list-units --type=service | grep systemd
# État de systemd
systemctl status
# Services critiques
systemctl list-units --type=service --state=failed
Étape 2: Analyser les Dépendances
# Dépendances d'un service
systemctl list-dependencies sshd
# Services qui dépendent de sshd
systemctl list-dependencies --reverse sshd
Exercice 5: Pratique avec nginx
Étape 1: Installation et Configuration
# Installer nginx
sudo apt update
sudo apt install -y nginx
# Vérifier l'état
systemctl status nginx
# Démarrer
sudo systemctl start nginx
# Activer au démarrage
sudo systemctl enable nginx
Étape 2: Gestion
# Redémarrer
sudo systemctl restart nginx
# Recharger configuration
sudo systemctl reload nginx
# Voir les logs
sudo journalctl -u nginx -f
Étape 3: Test
# Tester le service
curl http://localhost
# Voir les processus
ps aux | grep nginx
Exercice 6: Script de Gestion
Étape 1: Script Basique
# Script pour gérer un service
cat > manage-service.sh << 'EOF'
#!/bin/bash
SERVICE=$1
ACTION=$2
if [ -z "$SERVICE" ] || [ -z "$ACTION" ]; then
echo "Usage: $0 service {start|stop|restart|status|enable|disable}"
exit 1
fi
case $ACTION in
start)
sudo systemctl start "$SERVICE"
;;
stop)
sudo systemctl stop "$SERVICE"
;;
restart)
sudo systemctl restart "$SERVICE"
;;
status)
systemctl status "$SERVICE"
;;
enable)
sudo systemctl enable "$SERVICE"
;;
disable)
sudo systemctl disable "$SERVICE"
;;
*)
echo "Action inconnue: $ACTION"
exit 1
;;
esac
EOF
chmod +x manage-service.sh
# Utiliser
./manage-service.sh nginx status
./manage-service.sh nginx restart
Vérification
Checklist
Vérifiez que vous pouvez:
- Voir l'état des services (systemctl status)
- Lister les services (list-units)
- Démarrer/arrêter des services
- Activer/désactiver au démarrage
- Voir les logs (journalctl)
- Analyser les dépendances
- Gérer des services courants (nginx, sshd)
Questions de Réflexion
-
Quelle est la différence entre start et enable?
- start: Démarre maintenant
- enable: Active au démarrage système
-
Quand utiliser reload vs restart?
- reload: Recharge la config sans interruption
- restart: Redémarre complètement (interruption)
-
Pourquoi utiliser journalctl au lieu de /var/log?
- journalctl: Logs centralisés systemd, plus moderne
- /var/log: Logs traditionnels, toujours disponibles
Prochaines Étapes
- Lab 8.2: Services Personnalisés
- Lab 8.3: Cron Avancé et systemd Timers
- Chapitre 8.1: Gestion des Services systemd
Lab créé le: Décembre 2024 - Testé sur Ubuntu 24.04