Désactiver le préchargeur
Explorez, Apprenez et Maîtrisez

Documentation et Tutoriels - Hébergement Web Caramania.Ca

avec Nos Documentation et Tutoriels

Découvrez notre vaste bibliothèque de documentation et de tutoriels conçus pour vous aider à tirer le meilleur parti des services Caramania.Ca. Que vous soyez un débutant cherchant à configurer votre premier site web ou un utilisateur avancé désireux d'explorer des fonctionnalités plus complexes, nos guides pas à pas vous accompagneront à chaque étape. Simplifiez la gestion de vos services, trouvez des solutions rapides à vos problèmes, et approfondissez vos connaissances grâce à notre centre de ressources complet.

Documentation / Tutoriels Linux / Administration / Gérer les services avec systemd sur Linux (Ubuntu, Debian, AlmaLinux)
Bahanos
09/01/2025
Débutant
20 minutes

Prérequis

  • Un serveur Linux moderne (Ubuntu 20.04+, Debian 11+, AlmaLinux 9, Rocky Linux 9)
  • Accès root ou sudo

systemd est le système d'initialisation standard sur la plupart des distributions Linux modernes. Il gère le démarrage du système et les services (daemons). Les commandes systemd sont identiques sur Ubuntu, Debian, AlmaLinux et Rocky Linux.

1. Commandes de base

Gestion des services
# Voir le statut d'un service
systemctl status nginx

# Démarrer un service
systemctl start nginx

# Arrêter un service
systemctl stop nginx

# Redémarrer un service
systemctl restart nginx

# Recharger la configuration (sans redémarrage)
systemctl reload nginx

# Activer au démarrage
systemctl enable nginx

# Désactiver au démarrage
systemctl disable nginx

# Activer ET démarrer
systemctl enable --now nginx

2. Voir les services

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

# Services actifs
systemctl list-units --type=service --state=running

# Services échoués
systemctl list-units --type=service --state=failed

# Services activés au démarrage
systemctl list-unit-files --type=service --state=enabled

# Rechercher un service
systemctl list-units | grep mysql

3. Voir les logs avec journalctl

Logs système
# Logs d'un service
journalctl -u nginx

# Logs en temps réel
journalctl -u nginx -f

# Logs depuis le dernier démarrage
journalctl -u nginx -b

# Logs des dernières 24h
journalctl -u nginx --since "24 hours ago"

# Logs d'aujourd'hui
journalctl -u nginx --since today

# Dernières 100 lignes
journalctl -u nginx -n 100

# Logs d'erreur seulement
journalctl -u nginx -p err

# Tous les logs système
journalctl -xe

4. Créer un service personnalisé

Structure d'un fichier service
# Les fichiers service sont dans /etc/systemd/system/
nano /etc/systemd/system/mon-application.service
Exemple : mon-application.service
[Unit]
Description=Mon Application
After=network.target

[Service]
Type=simple
User=www-data
Group=www-data
WorkingDirectory=/var/www/mon-app
ExecStart=/usr/bin/node /var/www/mon-app/server.js
Restart=on-failure
RestartSec=10

# Variables d'environnement
Environment=NODE_ENV=production
Environment=PORT=3000

# Ou charger depuis un fichier
# EnvironmentFile=/etc/mon-app/env

# Logs
StandardOutput=journal
StandardError=journal
SyslogIdentifier=mon-app

[Install]
WantedBy=multi-user.target
Activer le service
# Recharger systemd après création/modification
systemctl daemon-reload

# Activer et démarrer
systemctl enable --now mon-application

# Vérifier
systemctl status mon-application

5. Types de services

Types disponibles
# simple : Le processus principal est celui lancé par ExecStart (défaut)
Type=simple

# forking : Le processus se fork et le parent se termine
Type=forking
PIDFile=/var/run/mon-app.pid

# oneshot : Pour les scripts qui s'exécutent une fois
Type=oneshot
RemainAfterExit=yes

# notify : Le service signale quand il est prêt
Type=notify

# idle : Comme simple, mais attend que tous les jobs soient finis
Type=idle

6. Options de redémarrage

Politique de redémarrage
# Redémarrer en cas d'échec
Restart=on-failure

# Toujours redémarrer
Restart=always

# Ne jamais redémarrer
Restart=no

# Redémarrer sauf si arrêt propre
Restart=on-abnormal

# Délai avant redémarrage
RestartSec=10

# Nombre max de redémarrages
StartLimitBurst=5
StartLimitIntervalSec=60

7. Exemples de services courants

Service Python

python-app.service
[Unit]
Description=Python Application
After=network.target

[Service]
Type=simple
User=python-app
WorkingDirectory=/opt/python-app
ExecStart=/opt/python-app/venv/bin/python app.py
Restart=always
Environment=PYTHONUNBUFFERED=1

[Install]
WantedBy=multi-user.target

Service avec script shell

backup.service
[Unit]
Description=Backup Service

[Service]
Type=oneshot
ExecStart=/opt/scripts/backup.sh
User=root

# Pas de [Install] car lancé par un timer

8. Timers (alternative à cron)

backup.timer
[Unit]
Description=Backup Timer

[Timer]
# Tous les jours à 3h00
OnCalendar=*-*-* 03:00:00

# Ou toutes les 6 heures
# OnCalendar=*-*-* 0/6:00:00

# Ou 15 min après le démarrage
# OnBootSec=15min

# Persistant (rattraper si manqué)
Persistent=true

[Install]
WantedBy=timers.target
Activer le timer
# Activer le timer (pas le service !)
systemctl enable --now backup.timer

# Lister les timers
systemctl list-timers

# Exécuter manuellement
systemctl start backup.service

9. Dépendances entre services

Gérer les dépendances
[Unit]
Description=Mon Application

# Démarrer après ces services
After=network.target mysql.service

# Requiert ces services (échoue si absent)
Requires=mysql.service

# Souhaite ces services (n'échoue pas si absent)
Wants=redis.service

# Démarre avant ces services
Before=nginx.service

10. Commandes avancées

Commandes utiles
# Voir la configuration d'un service
systemctl cat nginx

# Voir les propriétés
systemctl show nginx

# Masquer un service (empêche tout démarrage)
systemctl mask nginx
systemctl unmask nginx

# Analyser le temps de démarrage
systemd-analyze
systemd-analyze blame
systemd-analyze critical-chain

# Recharger tous les daemons
systemctl daemon-reload

# Redémarrer le serveur
systemctl reboot

# Éteindre
systemctl poweroff
systemd maîtrisé !

Vous savez maintenant gérer les services Linux avec systemd. C'est la base de l'administration système moderne.

💬 Écrivez-nous sur Messenger !