TP on crée un Daemon ou service

systemd et les daemons

« C’est un démon » décrit la nature technique du processus (un programme en arrière-plan).

« C’est un service » décrit la façon dont il est géré (comme une unité par systemd).

1.1 C’est quoi systemd ?

systemd = le « chef d’orchestre » de Linux

  • C’est le premier programme qui démarre quand Linux s’allume (PID 1)
  • Il lance tous les autres programmes et services

Daemon = un programme qui tourne en arrière-plan

  • Exemples : sshd (service SSH), apache2 (serveur web), mysql (base de données)
  • Comme un « service Windows »

1.2 Les commandes systemctl de base

bruno@debian13:~$ systemctl status ssh
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/usr/lib/systemd/system/ssh.service; enabled; preset: enabled)
     Active: active (running) since Sun 2025-10-05 16:53:30 CEST; 4 weeks 2 days ago
 Invocation: 7aa19ad276de4c048901b77b5d9be420
       Docs: man:sshd(8)
             man:sshd_config(5)
    Process: 1661 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
   Main PID: 1701 (sshd)
      Tasks: 1 (limit: 34670)
     Memory: 9.6M (peak: 28M)
        CPU: 137ms
     CGroup: /system.slice/ssh.service
             └─1701 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"

oct. 05 16:53:30 debian13 systemd[1]: Starting ssh.service - OpenBSD Secure Shell server...
oct. 05 16:53:30 debian13 sshd[1701]: Server listening on 0.0.0.0 port 22.
oct. 05 16:53:30 debian13 sshd[1701]: Server listening on :: port 22.
oct. 05 16:53:30 debian13 systemd[1]: Started ssh.service - OpenBSD Secure Shell server.
oct. 07 09:47:42 debian13 sshd-session[74881]: Accepted password for bruno from 192.168.1.2 port 36508 ssh2
oct. 07 09:47:42 debian13 sshd-session[74881]: pam_unix(sshd:session): session opened for user bruno(uid=1000) by bruno(uid=0)
oct. 13 11:44:55 debian13 sshd-session[331783]: Accepted password for bruno from 192.168.1.2 port 41310 ssh2
oct. 13 11:44:55 debian13 sshd-session[331783]: pam_unix(sshd:session): session opened for user bruno(uid=1000) by bruno(uid=0)

Les états importants :

  • active (running) = ça marche ✓
  • inactive (dead) = arrêté ✗
  • failed = planté 💥

1.3 Démarrer/arrêter un service

# Démarrer un service
sudo systemctl start ssh

# Arrêter un service  
sudo systemctl stop ssh

# Redémarrer (stop + start)
sudo systemctl restart ssh

# Recharger juste la configuration
sudo systemctl reload ssh

1.4 Démarrage automatique

# Activer le démarrage auto au boot
sudo systemctl enable ssh

# Désactiver le démarrage auto
sudo systemctl disable ssh

# Voir si c'est activé
systemctl is-enabled ssh

1.5 Voir tous les services

# Lister tous les services
systemctl list-units --type=service

# Voir seulement les services actifs
systemctl list-units --type=service --state=active

# Voir les services échoués
systemctl --failed

Les daemons en pratique

2.1 Exemples de daemons courants

# Service SSH (connexion à distance)
systemctl status ssh

# Service réseau
systemctl status systemd-networkd

# Service d'impression
systemctl status cups

# Service horloge
systemctl status systemd-timesyncd

2.2 Les logs des daemons

# Voir les logs d'un service
sudo journalctl -u ssh

# Voir les logs en temps réel
sudo journalctl -u ssh -f

# Voir les logs depuis hier
sudo journalctl -u ssh --since=yesterday

2.3 Exercice pratique : gérer le service SSH

# 1. Vérifier le statut
systemctl status ssh

# 2. Si il est arrêté, le démarrer
sudo systemctl start ssh

# 3. Vérifier qu'il est bien actif
systemctl status ssh

# 4. Activer le démarrage automatique
sudo systemctl enable ssh

# 5. Voir les logs
sudo journalctl -u ssh