Chaque processus
actif sur le système s'exécute avec une priorité donnée (aussi
appelée « valeur de sympathie », nice
value en anglais). Cette valeur peut varier de -20
(priorité la plus haute) à 19 (priorité la plus basse). Si elle
n'est pas définie, tous les processus s'exécutent avec une priorité
de 0 par défaut (la priorité de planification de
« base »). Les processus ayant la priorité maximale (la
valeur la plus basse, jusqu'à -20) s'exécutent plus souvent que les
processus ayant une priorité inférieure (jusqu'à 19), et se voient
ainsi offrir plus de temps processeur. Les utilisateurs normaux
peuvent seulement diminuer la priorité de leurs processus dans la
fourchette 0 à 19. Le super-utilisateur (root
) peut définir
n'importe quelle priorité à tous les processus.
Si un ou plusieurs processus prennent d'assaut toutes les ressources du système, vous pouvez changer leur priorité au lieu de les tuer. On utilise alors la commande renice. Sa syntaxe est la suivante :
renice priorité [[-p] pid ...] [[-g] pgrp ...] [[-u] utilisateur ...]
La priorité
équivaut à la valeur numérique de
la priorité, PID (précédé de -p
pour une liste
de PID) représente l'ID du processus,
pgrp
indique (-g
pour
plusieurs) l'ID du groupe du processus, et
utilisateur
(ou -u
pour
plusieurs utilisateurs) représente le nom d'utilisateur du
propriétaire du processus.
Supposons que vous veniez de lancer un processus auquel a été attribué le numéro PID 785, lequel lance une longue opération scientifique, et pendant que ce processus tourne vous souhaitez jouer à un jeu qui nécessite que vous libériez des ressources système. Tapez alors :
$ renice +15 785
Ainsi, le processus durera sans doute plus longtemps, mais il n'empruntera pas de temps processeur aux autres processus.
Si vous êtes l'administrateur d'un système partagé et constatez qu'un des utilisateurs lance beaucoup de processus accaparant les ressources du système, vous pouvez changer la priorité de tous les processus de cet utilisateur avec la commande :
# renice +20 -u pierre
Après cela, tous les processus de pierre auront une priorité plus basse et ne bloqueront pas les processus des autres utilisateurs.
Maintenant que vous savez que vous pouvez changer la priorité des processus, vous voudrez peut-être lancer une commande avec une priorité prédéfinie. Cela s'accomplit grâce à la commande nice.
Il suffit de
placer votre commande en argument de la commande nice. Utilisez l'option
-n
pour assigner une priorité. Par
défaut, nice assigne une priorité de 10.
Par exemple, si vous souhaitez créer une image ISO à partir du CD-ROM d'installation de Mandriva Linux, vous utilisez d'habitude :
$ dd if=/dev/cdrom of=~/mandriva1.iso
Mais sur certains systèmes avec un lecteur CD-ROM IDE standard, le fait de copier de grands volumes de données peut utiliser énormément de ressources. Pour que cela n'empêche pas les autres personnes ou processus de fonctionner correctement, on peut démarrer le processus de copie avec une priorité affaiblie :
$ nice -n 19 dd if=/dev/cdrom of=~/mandriva1.iso