Dans l'écosystème Unix, un processus est un programme en cours d'exécution. Ainsi, tout programme exécuté sur votre machine Linux est un processus. Un ou plusieurs processus peuvent être en cours d'exécution sur votre machine Linux à la fois. Nous pouvons afficher les informations sur les processus actifs en utilisant ps commande. Par défaut, la commande ps affiche uniquement les processus de l'utilisateur actuel. Vous pouvez utiliser la commande "ps -ef" (sans les guillemets, bien sûr) pour afficher tous les processus. Pour afficher l'utilisateur d'un processus, nous utilisons "ps -u". J'espère que vous avez une idée de base sur les processus Linux. Venons-en maintenant au sujet d'aujourd'hui - comment changer la priorité d'un processus sous Linux en utilisant nice et renice commandes.
Comme vous le savez peut-être, par défaut, le noyau Linux considère tous les processus d'égale importance et alloue la même quantité de temps CPU à chaque processus. Parfois, vous pouvez augmenter ou diminuer la priorité de certains processus pour utiliser plus de temps CPU. C'est là que les commandes nice et renice viennent en aide. La commande Nice est utilisée pour exécuter un processus avec une priorité définie par l'utilisateur, tandis que la commande Renice est utilisée pour modifier la priorité d'un processus en cours d'exécution. Généralement, les commandes nice et renice sont utilisées pour modifier la priorité par rapport à la priorité par défaut d'un processus.
Modifier la priorité d'un processus avec la commande Nice
Afficher la priorité par défaut d'un processus
Chaque fois qu'un processus démarre normalement, il obtient la valeur de priorité par défaut de zéro .
Nous utilisons le programme cmus , un lecteur multimédia en ligne de commande pour les besoins de ce guide.
Exécutons-le en utilisant la commande :
$ cmus &
Remarque : Si une commande est terminée par l'opérateur de contrôle & , le shell exécute la commande en arrière-plan dans un sous-shell.
Voyons maintenant les processus en cours d'exécution à l'aide de la commande :
$ ps -al
Exemple de résultat :
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 T 1000 13829 13704 0 80 0 - 39431 signal pts/0 00:00:00 cmus 0 R 1000 13848 13704 0 80 0 - 8148 - pts/0 00:00:00 ps
Afficher les processus en cours d'exécution à l'aide de la commande ps
Comme vous le voyez dans le résultat ci-dessus, la valeur de gentillesse est répertoriée sous l'en-tête de colonne "NI" . Ainsi, il est clair que tous les processus obtiennent la valeur de priorité par défaut de zéro.
Démarrer un processus avec un utilitaire sympa
Si vous démarrez un processus avec une commande nice sans aucun argument, il obtient la valeur par défaut de 10 . Ici 10 est la valeur de gentillesse ou la priorité. Les valeurs de gentillesse vont de -20 (le plus favorable au processus) à 19 (le moins favorable au processus). Pour faire simple, les valeurs négatives (par exemple -20) donnent une priorité plus élevée à un processus et les valeurs positives (par exemple 19) donnent une priorité inférieure.
Maintenant, arrêtons le programme en cours d'exécution cmus avec la commande :
$ kill -9 13829
Ici, 13829 est le PID du programme cmus. Vous verrez cette valeur sous l'en-tête "PID" dans la sortie ci-dessus.
Maintenant, lancez le programme cmus avec l'utilitaire "nice".
$ nice cmus &
Vérifiez les processus en cours d'exécution avec la commande :
$ ps -al
Exemple de résultat :
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 T 1000 13957 13704 0 90 10 - 55815 signal pts/0 00:00:00 cmus 0 R 1000 13985 13704 0 80 0 - 8148 - pts/0 00:00:00 ps
Démarrer un processus avec un utilitaire sympa
Voyez, maintenant le processus cmus a la valeur de gentillesse par défaut de 10 , ce qui signifie que sa priorité a été modifiée.
Démarrer un processus avec un utilitaire agréable avec une priorité inférieure
En outre, vous pouvez démarrer le même processus avec une valeur de gentillesse spécifique, par exemple 15 , comme ci-dessous.
Tuez le processus avec la commande kill :
$ kill -9 13957
Encore une fois, démarrez le processus avec une valeur de gentillesse de 15 :
$ nice -15 cmus &
Remarque : Ici, ne confondez pas - (trait d'union) avec moins. Nous utilisons - (trait d'union) pour transmettre une valeur. Par conséquent, pour attribuer une valeur positive, nous utilisons -15. De même, pour attribuer une valeur négative, nous utilisons --15 (c'est-à-dire un double trait d'union).
Vérifions la valeur de gentillesse en utilisant la commande ps -al :
$ ps -al
Exemple de résultat :
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 T 1000 14060 13704 0 95 15 - 55815 signal pts/0 00:00:00 cmus 0 R 1000 14069 13704 0 80 0 - 8148 - pts/0 00:00:00 ps
Démarrer un processus avec un utilitaire agréable avec une priorité inférieure
Vous voyez, le processus cmus a maintenant la valeur de gentillesse de 15.
Dans les exemples ci-dessus, nous avons lancé les processus avec une priorité inférieure. N'oubliez pas que une valeur de gentillesse positive représente une priorité inférieure .
Démarrer un processus avec l'utilitaire Nice avec une priorité plus élevée
Vous savez déjà que la valeur de gentillesse négative représente une priorité plus élevée. Veuillez noter que les utilisateurs réguliers ne sont pas autorisés à démarrer un processus avec une priorité plus élevée. Vous devez être un utilisateur root pour lancer n'importe quel processus avec une priorité plus élevée .
Donc, pour démarrer un processus en utilisant un utilitaire sympa avec une priorité inférieure, par exemple -15 , exécutez la commande suivante :
# nice --15 cmus &
Exemple de résultat :
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 14331 14306 0 80 0 - 20531 poll_s pts/0 00:00:00 sudo 4 S 0 14332 14331 0 80 0 - 13796 wait pts/0 00:00:00 su 4 S 0 14333 14332 0 80 0 - 5736 wait pts/0 00:00:00 bash 4 T 0 14358 14333 0 65 -15 - 55643 signal pts/0 00:00:00 cmus 0 R 0 14366 14333 0 80 0 - 8148 - pts/0 00:00:00 ps
Démarrer un processus avec l'utilitaire Nice avec une priorité plus élevée
Démarrer les processus avec l'option -n
Vous pouvez également utiliser -n option pour augmenter ou diminuer la priorité.
Pour augmenter la priorité, exécutez la commande suivante en tant que root utilisateur :
# nice -n -15 cmus &
Pour diminuer la priorité, exécutez la commande suivante comme normal utilisateur :
$ nice -n 15 cmus &Télécharger - Ebook gratuit :"Tutoriel Amazon S3"
Modifier la priorité d'un processus en cours d'exécution avec la commande Renice
Ce que nous avons vu jusqu'à présent, c'est que nous avons lancé un processus avec une priorité définie par l'utilisateur. Maintenant, nous allons changer la priorité d'un processus en cours d'exécution à l'aide de la commande renice.
Voyons les processus en cours d'exécution à l'aide de la commande :
$ ps -al
Exemple de résultat :
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 T 1000 15059 14306 0 95 15 - 55815 signal pts/0 00:00:00 cmus 0 R 1000 15066 14306 0 80 0 - 8148 - pts/0 00:00:00 ps
Comme vous le voyez dans la sortie ci-dessus, cmus s'exécute avec une valeur de priorité inférieure de 15.
Pour modifier la valeur de gentillesse actuelle d'un processus en cours d'exécution, par exemple 18 , exécutez la commande suivante :
$ renice -n 18 -p 15059
Ici, 15059 est l'ID de processus du processus cmus.
Exemple de sortie :
15059 (process ID) old priority 15, new priority 18
Vérifiez la valeur de gentillesse à l'aide de la commande :
$ ps -al
Exemple de sortie :
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 T 1000 15059 14306 0 98 18 - 55815 signal pts/0 00:00:00 cmus 0 R 1000 15074 14306 0 80 0 - 8148 - pts/0 00:00:00 ps
Pour le changer en valeur de gentillesse négative (pour attribuer une priorité plus élevée), exécutez la commande suivante en tant que root utilisateur :
# renice -n -20 -p 14749
Vous pouvez même modifier les priorités de tous les groupes en cours d'exécution appartenant à un groupe particulier, comme ci-dessous.
# renice -n -20 -g ostechnix
La commande ci-dessus modifie la priorité de tous les processus en cours d'exécution qui appartiennent à un groupe appelé ostechnix .
Et aussi, vous pouvez changer la priorité du processus d'exécution appartenant à un utilisateur particulier, par exemple sk , en utilisant la commande :
# renice -n -20 -u sk
Pour plus d'options, je vous suggère de vous référer aux pages de manuel des utilitaires nice et renice.
$ man nice
$ man renice
Suggestion de lecture :
- Comment savoir depuis combien de temps un processus s'exécute sous Linux
- Comment afficher les informations de processus à l'aide de Procs sous Linux
J'espère que vous avez une idée de base sur ce qu'est un processus Linux et sur la façon de modifier sa priorité à l'aide des utilitaires nice et renice. J'espère que cela vous aidera.