5.2 - Surveiller et arrêter les processus
Un processus est une instance d'un programme en cours d'exécution. Il possède un identifiant unique, le PID, ainsi qu'un propriétaire et un état.
Lister les processus
ps
ps aux
ps -ef
ps -u "$USER"
ps -p 1234 -o pid,ppid,user,%cpu,%mem,etime,cmd
Rechercher par nom :
pgrep -a sshd
pidof sshd
Éviter ps aux | grep nom lorsque pgrep -a nom suffit.
Surveiller en direct
top
htop
Dans top, P trie par processeur, M par mémoire et q quitte. htop est plus convivial mais n'est pas toujours installé.
Résumé de la mémoire :
free -h
Sous Linux, une partie de la mémoire « utilisée » sert de cache récupérable. La colonne available est généralement plus pertinente que free seule.
Envoyer un signal
kill 1234 # SIGTERM : demande un arrêt propre
kill -15 1234 # identique
kill -9 1234 # SIGKILL : arrêt forcé par le noyau
pkill -TERM nom
Méthode recommandée :
- vérifier le PID et le propriétaire ;
- envoyer
SIGTERM; - attendre et contrôler ;
- utiliser
SIGKILLseulement si le processus ne répond pas.
SIGKILL empêche le programme de nettoyer ses fichiers temporaires ou de terminer une écriture.
Tâches au premier et à l'arrière-plan
commande-longue &
jobs
fg %1
bg %1
Suspendre le programme au premier plan avec Ctrl + Z, puis utiliser bg ou fg. Ctrl + C demande son interruption.
Garder une commande après la fermeture du terminal :
nohup commande-longue > commande.log 2>&1 &
Pour les tâches importantes, préférer un service systemd, tmux ou screen, qui offrent une gestion plus claire.
Priorité
nice -n 10 commande
renice 10 -p 1234
Une valeur nice plus élevée réduit la priorité CPU. Des valeurs négatives demandent généralement des privilèges.
Pour un service, agir avec systemctl plutôt que tuer directement son processus : le gestionnaire peut sinon le relancer immédiatement.