Skip to content

Services et processus

Gestion des services (systemctl)

Contrôle d'un service

systemctl start nginx         # Démarrer un service
systemctl stop nginx          # Arrêter un service
systemctl restart nginx       # Arrêter puis redémarrer
systemctl reload nginx        # Recharger la configuration sans couper le service
systemctl enable nginx        # Activer au démarrage du système
systemctl disable nginx       # Désactiver au démarrage
systemctl enable --now nginx  # Activer et démarrer immédiatement
systemctl disable --now nginx # Désactiver et arrêter immédiatement

État et inspection

systemctl status nginx            # État détaillé du service et derniers logs
systemctl is-active nginx         # Retourne "active" ou "inactive"
systemctl is-enabled nginx        # Retourne "enabled" ou "disabled"
systemctl is-failed nginx         # Retourne "failed" si le service a planté
systemctl list-units --type=service           # Lister tous les services actifs
systemctl list-units --type=service --all     # Tous les services, actifs et inactifs
systemctl list-unit-files --type=service      # État enabled/disabled de tous les services

Recharger systemd

systemctl daemon-reload       # Recharger les fichiers unit après modification

Quand utiliser daemon-reload

À chaque fois qu'un fichier .service est créé ou modifié dans /etc/systemd/system/, il faut lancer daemon-reload avant de démarrer le service.

Logs systemd (journalctl)

journalctl -u nginx                  # Logs d'un service spécifique
journalctl -u nginx -f               # Logs en temps réel (follow)
journalctl -u nginx --since today    # Logs depuis aujourd'hui
journalctl -u nginx -n 50            # Les 50 dernières lignes
journalctl -u nginx --since "2026-03-07 08:00" --until "2026-03-07 10:00"
journalctl -p err                    # Uniquement les erreurs
journalctl -p err -u nginx           # Erreurs d'un service spécifique
journalctl --disk-usage              # Taille occupée par les logs
journalctl --vacuum-time=7d          # Supprimer les logs de plus de 7 jours

Processus (ps)

ps aux                        # Tous les processus du système avec détails
ps aux | grep nginx           # Filtrer par nom
ps -ef                        # Format alternatif avec PPID (parent PID)
ps -u younes                  # Processus d'un utilisateur spécifique
ps --sort=-%cpu | head -10    # Top 10 par consommation CPU
ps --sort=-%mem | head -10    # Top 10 par consommation mémoire

Colonnes importantes de ps aux

Colonne Description
USER Propriétaire du processus
PID Identifiant du processus
%CPU Pourcentage CPU utilisé
%MEM Pourcentage mémoire utilisée
STAT État : R running, S sleeping, Z zombie, T stopped
COMMAND Commande qui a lancé le processus

Processus (top et htop)

top                           # Monitoring temps réel des processus
htop                          # Version améliorée de top (à installer)
Raccourcis clavier dans top
# k   → kill un processus (demande le PID)
# r   → renice (changer la priorité)
# M   → trier par mémoire
# P   → trier par CPU
# q   → quitter

Signaux et kill

kill 1234                     # Envoyer SIGTERM (arrêt propre) au PID 1234
kill -9 1234                  # Envoyer SIGKILL (arrêt forcé) au PID 1234
kill -15 1234                 # SIGTERM explicite
killall nginx                 # Envoyer SIGTERM à tous les processus nommés nginx
killall -9 nginx              # Forcer l'arrêt de tous les processus nginx
pkill -u younes               # Arrêter tous les processus d'un utilisateur

kill -9

SIGKILL ne laisse pas au processus le temps de se fermer proprement. Il ne sauvegarde pas son état et ne ferme pas ses fichiers ouverts. À utiliser uniquement si SIGTERM n'a pas fonctionné.

Priorité des processus (nice et renice)

Les valeurs nice vont de -20 (priorité maximale) à +19 (priorité minimale). Par défaut un processus démarre avec nice 0.

nice -n 10 ./script.sh        # Lancer un processus avec une priorité basse
nice -n -5 ./script.sh        # Lancer avec une priorité élevée (root uniquement)
renice -n 5 -p 1234           # Modifier la priorité d'un processus en cours
renice -n 10 -u younes        # Modifier la priorité de tous les processus d'un user

Processus en arrière-plan

commande &                    # Lancer en arrière-plan
jobs                          # Lister les jobs en arrière-plan
fg %1                         # Ramener le job 1 au premier plan
bg %1                         # Reprendre le job 1 en arrière-plan
Ctrl + Z                      # Suspendre le processus en cours
nohup commande &              # Lancer en arrière-plan, résiste à la déconnexion
disown %1                     # Détacher un job du terminal courant

nohup vs screen/tmux

nohup est simple pour des scripts ponctuels. Pour des sessions interactives longues qui doivent survivre à une déconnexion SSH, screen ou tmux sont bien plus adaptés.