Credit : Illustration backtotheweb.fr
Les bases de systemd : gerer ses services Linux
Les bases de systemd : gerer ses services Linux
systemd est le gestionnaire de systeme et de services utilise par la majorite des distributions Linux modernes, dont Debian et Ubuntu. Sur votre serveur IONOS, chaque service (Nginx, PHP-FPM, MariaDB) est gere par systemd.
systemctl : la commande centrale
Gerer les services
# Demarrer, arreter, redemarrer un service
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
# Recharger la configuration sans couper le service
systemctl reload nginx
# Activer/desactiver au demarrage
systemctl enable nginx
systemctl disable nginx
# Verifier l'etat
systemctl status nginx
Explorer les services
# Lister tous les services actifs
systemctl list-units --type=service --state=active
# Lister les services en echec
systemctl list-units --type=service --state=failed
# Voir les dependances d'un service
systemctl list-dependencies nginx
# Verifier si un service est actif
systemctl is-active nginx
systemctl is-enabled nginx
journalctl : lire les logs
journalctl est l'outil de consultation des logs de systemd :
# Logs d'un service specifique
journalctl -u nginx
journalctl -u php8.2-fpm
# Suivre les logs en temps reel
journalctl -u nginx -f
# Filtrer par date
journalctl -u nginx --since "2026-03-09 08:00" --until "2026-03-09 12:00"
journalctl -u nginx --since "1 hour ago"
# Dernières N lignes
journalctl -u nginx -n 50
# Logs du demarrage actuel
journalctl -b
# Logs par priorite (erreurs et plus)
journalctl -p err
journalctl -p warning
# Espace utilise par les logs
journalctl --disk-usage
# Nettoyer les vieux logs
journalctl --vacuum-time=7d
journalctl --vacuum-size=500M
Creer un service personnalise (unit file)
Supposons que vous avez une application Node.js a executer en tant que service. Creez le fichier /etc/systemd/system/mon-app.service :
[Unit]
Description=Mon application Node.js
After=network.target
Wants=network-online.target
[Service]
Type=simple
User=www-data
Group=www-data
WorkingDirectory=/var/www/mon-app
ExecStart=/usr/bin/node server.js
Restart=on-failure
RestartSec=5
StandardOutput=journal
StandardError=journal
SyslogIdentifier=mon-app
# Securite
NoNewPrivileges=true
ProtectSystem=strict
ReadWritePaths=/var/www/mon-app
ProtectHome=true
PrivateTmp=true
# Limites de ressources
MemoryMax=512M
CPUQuota=80%
[Install]
WantedBy=multi-user.target
Note perso : sur nos serveurs IONOS, cette config tourne nickel depuis des mois.
Activez et demarrez le service :
systemctl daemon-reload
systemctl enable mon-app
systemctl start mon-app
systemctl status mon-app
Les timers : remplacer cron
Les timers systemd sont une alternative moderne a cron. Creez d'abord le service dans /etc/systemd/system/backup.service :
[Unit]
Description=Sauvegarde quotidienne
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh
User=root
Puis le timer dans /etc/systemd/system/backup.timer :
[Unit]
Description=Lancer la sauvegarde tous les jours a 3h
[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
RandomizedDelaySec=300
[Install]
WantedBy=timers.target
Activez le timer :
systemctl daemon-reload
systemctl enable backup.timer
systemctl start backup.timer
Verifiez les timers actifs :
systemctl list-timers --all
Les avantages des timers sur cron : journalisation integree dans journalctl, gestion des dependances, delai aleatoire pour eviter les pics de charge, et execution rattrapage si le serveur etait eteint au moment prevu.
Commandes de depannage
# Voir pourquoi un service a echoue
systemctl status mon-app
journalctl -u mon-app --no-pager
# Recharger apres modification d'un unit file
systemctl daemon-reload
# Analyser le temps de demarrage
systemd-analyze
systemd-analyze blame
systemd est un outil puissant qui merite d'etre maitrise par tout administrateur Linux. La combinaison de systemctl et journalctl couvre la grande majorite des besoins de gestion de services au quotidien.
Article mis à jour en avril 2026.