Aller au contenu principal

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​

  1. Quelle est la différence entre start et enable?

    • start: Démarre maintenant
    • enable: Active au démarrage système
  2. Quand utiliser reload vs restart?

    • reload: Recharge la config sans interruption
    • restart: Redémarre complètement (interruption)
  3. 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