GNU/Linux >> Tutoriels Linux >  >> Linux

Comment changer la priorité des processus à l'aide des exemples Linux Nice et Renice

Chaque processus en cours d'exécution sous Unix a une priorité qui lui est assignée.

Vous pouvez modifier la priorité du processus à l'aide de l'utilitaire nice et renice. La commande Nice lancera un processus avec une priorité de planification définie par l'utilisateur. La commande Renice modifiera la priorité de planification d'un processus en cours d'exécution.

Le noyau Linux planifie le processus et alloue le temps CPU en conséquence pour chacun d'eux. Mais, lorsqu'un de vos processus nécessite une priorité plus élevée pour obtenir plus de temps CPU, vous pouvez utiliser la commande nice et renice comme expliqué dans ce tutoriel.

La plage de priorité de planification du processus est de -20 à 19. Nous appelez cela comme une belle valeur.

Une belle valeur de -20 représente la priorité la plus élevée, et une belle valeur de 19 représente la moindre priorité pour un processus.

Par défaut, lorsqu'un processus démarre, il obtient la priorité par défaut de 0.

1. Afficher la belle valeur d'un processus

La priorité actuelle d'un processus peut être affichée à l'aide de la commande ps.

La colonne "NI" dans la sortie de la commande ps indique la valeur de nice actuelle (c'est-à-dire la priorité) d'un processus.

Nous allons lancer un programme de test appelé test.pl qui sera utilisé pour démontrer la commande nice et renice. Ce programme de test effectuera certaines tâches et fonctionnera pendant un certain temps.

$ perl test.pl

Si vous exécutez la commande ps comme indiqué ci-dessous, vous pouvez remarquer que ce programme test.pl a la valeur nice par défaut de 0 (regardez la colonne NI dans la sortie suivante).

$ ps -fl -C "perl test.pl"
F S UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
0 R bala 6884  6424 99  80   0 -  1556 -      13:45 pts/3    00:05:54 perl test.pl

2. Lancer un programme avec moins de priorité

Au lieu de lancer le programme avec la priorité par défaut, vous pouvez utiliser la commande nice pour lancer le processus avec une priorité spécifique.

Dans cet exemple, test.pl est lancé avec une belle valeur de 10.

$ nice -10 perl test.pl

Remarque : N'oubliez pas que -10 dans la commande ci-dessus définit la priorité d'un processus sur 10. Le – dans la commande nice représente le trait d'union, que nous utilisons pour transmettre des options à la commande.

Donc, pour passer la belle valeur de 5, vous direz -5. Pour passer la belle valeur de 6, vous direz -6.

Comme vous le voyez ci-dessous, ce programme est maintenant lancé avec une belle valeur de 10, ce qui signifie qu'il s'exécutera avec une priorité inférieure par rapport aux autres programmes lancés par défaut.

$ ps -fl -C "perl test.pl"
F S UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
0 R bala 7044  6424 99  90  10 -  1556 -      13:58 pts/3    00:00:03 perl test.pl

3. Lancer un programme avec une priorité élevée

Vous pouvez également lancer un programme avec une priorité plus élevée. Une valeur nice négative augmentera la priorité du processus. Ainsi, la valeur doit être spécifiée avec un — (deux traits d'union) devant la commande nice comme indiqué ci-dessous.

# nice --10 perl test.pl

Ainsi, pour passer la belle valeur de -5, vous ajouterez deux traits d'union devant 5. Pour passer la belle valeur de -6, vous ajouterez deux traits d'union devant 6.

Comme vous le voyez ci-dessous, ce programme est maintenant lancé avec une belle valeur de -10, ce qui signifie qu'il fonctionnera avec une priorité plus élevée par rapport aux autres programmes lancés par défaut.

# ps -fl -C "perl test.pl"
F S UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 R root 3534  3234 99  70 -10 -  1557 ?      19:06 pts/1    00:00:56 perl test.pl

Remarque :les utilisateurs réguliers ne sont pas autorisés à lancer un programme avec une priorité plus élevée. Seul l'utilisateur root est autorisé à lancer un programme avec une priorité élevée.

En tant qu'utilisateur régulier, si vous augmentez la priorité, vous obtiendrez le message d'erreur suivant de la commande nice.

$ nice --10 perl test.pl
nice: cannot set niceness: Permission denied

Notez qu'après avoir affiché le message d'erreur ci-dessus, le programme continuerait à s'exécuter avec la priorité par défaut (c'est-à-dire :0).

4. Changez la priorité avec l'option -n

La priorité du processus peut être ajustée à l'aide de l'option -n.

Augmentez la priorité :

# nice -n -5 perl test.pl

Diminuez la priorité :

# nice -n 5 perl test.pl

5. Modifier la priorité d'un processus en cours

La priorité d'un processus déjà en cours d'exécution peut être modifiée à l'aide de la commande renice.

Dans cet exemple, le programme test.pl est déjà en cours d'exécution avec une belle valeur de -10.

# ps -fl -C "perl test.pl"
F S UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 R root 3534  3234 99  70 -10 -  1557 ?      19:06 pts/1    00:00:56 perl test.pl

Nous pouvons changer la valeur de nice du programme ci-dessus en -19 comme indiqué ci-dessous. Passez l'ID de processus du programme ci-dessus à l'option -p.

# renice -n -19 -p 3534

Vérifiez que la valeur de nice a été changée en -19.

# ps -fl -C "perl test.pl"
F S UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 R root 3534  3234 99  70 -19 -  1557 ?      19:06 pts/1    00:00:56 perl test.pl

6. Modifier la priorité de tous les processus appartenant à un groupe

En utilisant l'option -g, vous pouvez modifier la priorité de tous les processus appartenant à un groupe. La commande suivante changera la valeur nice de tous les processus appartenant à geekstuff à 5.

# renice -n 5 -g geekstuff

7. Modifier la priorité de tous les processus appartenant à l'utilisateur

Renice permet de modifier la priorité de tous les processus appartenant à un utilisateur spécifique, comme indiqué ci-dessous.

# renice -n 5 -u bala

La commande ci-dessus changera la priorité de tous les processus appartenant à l'utilisateur bala. Il attribuera une belle valeur de 5 à tous les processus appartenant à l'utilisateur bala.

# ps -fl -C "perl"
F S UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
0 R bala 2720  2607 99  85   5 -  1556 -      14:34 pts/2    00:05:07 perl test.pl
0 R bala 2795  2661 99  85   5 -  1556 -      14:39 pts/3    00:00:09 perl 2.pl

Linux
  1. Tutoriel sur les commandes Linux nice et renice (7 exemples)

  2. Comment trouver et tuer le processus Zombie sous Linux

  3. Commandes Linux :Comment manipuler la priorité des processus

  4. Comment définir la priorité des processus Linux à l'aide des commandes nice et renice

  5. Comment combiner Ping et Traceroute sous Linux à l'aide d'exemples de commandes MTR

Comment changer la priorité d'un processus sous Linux

Comment suspendre un processus et le reprendre plus tard sous Linux

Nice et Renice - Définir la priorité du processus sous Linux

7 exemples pour gérer l'expiration et le vieillissement du mot de passe Linux à l'aide de chage

Comment tuer les processus sous Linux en utilisant kill, killall et pkill

Comment suivre et tracer un processus Linux