Dans cette leçon, tu vas apprendre à contrôler la priorité d'exécution des processus sous Linux. Quand ton système est sollicité par plusieurs tâches, savoir ajuster leur priorité te permet de garantir que les processus critiques obtiennent les ressources nécessaires.
Linux attribue une priorité (nice value) à chaque processus. Plus la valeur est basse, plus le processus est "gentil" — il cède du temps CPU aux autres. Plus elle est haute, plus il est prioritaire.
Par défaut, la plupart des processus ont une nice value de 0. Tu peux la faire varier de -20 (très prioritaire) à +19 (très conciliant).
Cas d'usage courants :
nice permet de lancer un programme avec une priorité modifiée dès le départ.
nice -n <valeur> <commande>
| Nice value | Comportement |
|---|---|
-20 | Processus très prioritaire (nécessite root) |
0 | Priorité par défaut |
+19 | Processus très "gentil", obtient le CPU en dernier |
nice -n 10 ./mon-script-lourd.sh
nice -n 15 tar -czf /backup/home.tar.gz /home/
nice -n 19 ffmpeg -i video.mp4 sortie.mkv &
sudo nice -n -10 systemctl start mon-service
Parfois, tu veux changer la priorité d'un processus qui tourne déjà — sans l'arrêter. C'est là qu'intervient renice.
renice <niveau> -p <PID>
renice <niveau> -u <utilisateur>
renice <niveau> -g <groupe>
ps -o pid,ni,comm | grep nom_du_processus
renice +15 -p 1234
sudo renice -10 -p 1234
renice +10 -u david
ps aux | grep compression
renice +5 -p <PID>
| Option | Description | Exemple |
|---|---|---|
-p <PID> | Cible un processus par son PID | renice +10 -p 5678 |
-u <utilisateur> | Cible tous les processus d'un utilisateur | renice +5 -u www-data |
-g <groupe> | Cible tous les processus d'un groupe | renice +5 -g developers |
top
Dans la sortie de top, la colonne NI affiche la nice value de chaque processus. Tu peux aussi changer la priorité directement dans top :
toprhtop
htop est plus visuel. La nice value est affichée et tu peux la modifier avec la touche r (renice).
ps -eo pid,ni,ppid,cmd --sort=ni
ps -eo pid,ni,cmd --sort=-ni | head -10
ps -eo pid,ni,cmd --sort=ni | head -10
sudo systemctl edit mon-service
Puis ajoute :
[Service]
Nice=10
nohup nice -n 15 ./backup-quotidien.sh > /var/log/backup.log 2>&1 &
time nice -n 10 ./mon-script.sh
yes > /dev/null &topnice -n 19 :nice -n 19 yes > /dev/null &top (colonne NI)python3 -c "while True: pass" &renice +15 -p <PID>ps -o pid,ni,cmd | grep python3sudo nice -n -5 ./script-critique.sh| Commande | Rôle |
|---|---|
nice -n <val> <cmd> | Lancer une commande avec une priorité donnée |
renice <val> -p <PID> | Modifier la priorité d'un processus en cours |
renice <val> -u <user> | Modifier la priorité de tous les processus d'un utilisateur |
ps -o pid,ni,cmd | Afficher les processus avec leur nice value |
top / htop | Visualiser et modifier les priorités en interactif |