Introduction

Introduction

La capacité de l'utilisateur à attacher une valeur de priorité à son propre processus lors de l'exécution détermine si vous êtes gentil avec vos collègues utilisateurs sur le même système. Êtes-vous gentil ou vous abusez simplement des ressources du système sans raison apparente? Dans cet article, vous apprendrez à gérer vos processus en termes de la puissance de traitement qu'ils consomment et de modifier une valeur prioritaire de vos processus en utilisant bon & Renice Commande Linux. Nous allons commencer par une théorie de base sur ce qui est le processus, la planification des processus, comment débuter un nouveau processus, puis nous passons à bon commander et expliquer comment modifier la valeur de priorité du processus.

Qu'est-ce que le processus

En termes simples, un processus est une convention de dénomination utilisée par Linux pour assumer le rôle d'un programme en cours d'exécution. Un processus est une collection de règles par lesquelles un programme particulier utilise le temps de processeur, la mémoire et les ressources d'E / S. Chaque processus exécuté sur un système Linux a son propre ID de processus (PID) par lequel il peut être surveillé et administré.

Linux Kernel est conçu pour collecter diverses informations sur chaque processus. Ceux-ci incluent, mais sans s'y limiter:

  • État du processus (coulant, sommeil, zombie ou arrêté)
  • Priorité d'exécution de processus (gentillesse)
  • Informations sur les ressources utilisées
  • propriétaire du processus
  • quels ports et fichiers réseau ont eu chaque processus particulier ouvert
  • et plus…

Maintenant que nous avons une idée de ce qu'est le processus, nous pouvons aller de l'avant et créer un processus. Pour ce faire, ouvrez simplement votre terminal et exécutez la commande oui en arrière-plan et redirigeant sa sortie vers / dev / null:

$ oui> / dev / null & [1] 5997 

Après cela, utilisez la commande ps -l, nous ne pouvons pas extraire les informations sur notre processus oui:

$ ps -l f s uid pid ppid c pri Ni addr sz wchan tty time cmd 0 s 1000 5830 3283 0 80 0 - 6412 wait pts / 0 00:00:00 bash 0 r 1000 5997 5830 99 80 0 - 1757 - pts / pts / 0 00:00:09 Oui 0 R 1000 5998 5830 0 80 0 - 2399 - PTS / 0 00:00:00 PS 

De ce qui précède, nous pouvons lire aux informations suivantes:

  • F - Flag: le processus n'a pas commencé par les privilèges des superutilisateurs. Sinon, nous verrions le numéro 4 ou la somme de 1 et 4. Vérifier homme PS pour plus d'informations.
  • S - État: le processus est en cours d'exécution
  • Uid - ID utilisateur de l'utilisateur qui a initié le processus. UID est réel un alias pour l'EUID (ID utilisateur efficace)
  • Piquer - ID de processus de notre Oui La commande est 5997
  • PPID - ID de processus parent. Il s'agit d'un ID de processus à partir de lequel notre commande YES avait été fourchue. Dans ce cas, c'est bash avec PID 5830.
  • C - Valeur entière de l'utilisation du processeur en% .
  • Pri - Processus prioritaire. La valeur plus élevée la priorité inférieure.
  • Ni - Belle valeur avec une plage de -20 à 19. Plus la valeur est plus élevée, plus vous êtes agréable pour les autres utilisateurs en d'autres termes, plus la valeur est plus élevée, la priorité inférieure.

Planification de processus

Cette section peut être ignorée si vous n'avez pas envie d'entrer dans plus de détails sur la priorité du processus et la planification. Ici, nous essaierons de décrire le processus Linux avec un résumé rudimentaire facile à comprendre car ce sujet peut s'étendre sur plusieurs pages et ce serait la seule introduction.

De notre point de vue, nous devons comprendre que Linux (Version du noyau Linux> = 2.6) Le planificateur est préemptif. Il s'agit d'une capacité qui permet au noyau de choisir de manière préventive d'exécuter une tâche de priorité plus élevée par rapport à celles avec une priorité inférieure. De plus, le noyau sépare les listes de priorités aux tâches en temps réel et aux tâches utilisateur qui font rage de 1 à 100 et 101 - 140.

De plus, le noyau Linux attribue à des tâches de priorité plus élevées. En d'autres termes, chaque tâche est autorisée à s'exécuter uniquement si elle a une tranche de temps restante. Par conséquent, une tranche de temps plus courte pour exécuter les causes du processus reste plus courte dans Runqueue active et consomme donc moins de ressources. Une fois la tranche de temps de processus vide, le processus est déplacé vers Runqueue expirée où sa priorité est recalculée, puis déplacée Runqueue active. Cette relation est illustrée sur le diagramme à votre droite. Il est important de mentionner que les deux runqueues actifs et expirés contiennent des listes de tâches triées par leur priorité.

Traiter le cycle de vie

Le principe de base de la gestion des processus Linux contient deux opérations distinctes lors de la création de nouveaux processus. L'opération est l'endroit où le processus se copie par fourchette() appel et crée ainsi un nouveau processus avec un PID unique. L'opération de fourche est le plus souvent suivie de exec () opération qui exécute un nouveau programme. Le premier processus créé pendant le temps de démarrage est init qui est toujours attribué pid 1. Tous les autres processus sont considérés comme des processus enfants du processus d'initial. Dans des circonstances normales avant que le processus des enfants ne soit permis de mourir, cet événement doit être reconnu par un processus parent en envoyant une valeur de sortie. Terminaison réussie Envoyer une valeur de processus parent 0. Si, à partir d'une raison, le processus d'enfant survivre au processus parent init acceptera ce processus comme un processus orphelin.

En utilisant la belle commande

Puisque la puissance de traitement était et est toujours en croissance de façon exponentielle au fil des ans, l'importance d'une belle commande diminue au même rythme. Par conséquent, en conséquence, c'est très aujourd'hui que vous serez obligé de changer la priorité du processus. Néanmoins, cette capacité est là et elle peut toujours être utile dans certaines situations. Par défaut, Nice définira un joli niveau sur 10.

$ Nice oui> / dev / null & [1] 5199 $ ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 1000 3383 3380 0 80 0 - 6445 WAIT PTS / 0 00:00:00 BASH 0 R 1000 5199 3383 99 90 10 - 1757 - PTS / 0 00:00 : 07 Oui 0 R 1000 5200 3383 0 80 0 - 2399 - PTS / 0 00:00:00 PS 

Pour commencer le processus avec une autre bonne valeur que 10, nous pouvons utiliser le commutateur -n.

$ Nice -n 15 Oui> / dev / null & Ou $ Nice -15 oui> / dev / null & [1] 5270 $ ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 1000 3383 3380 0 80 0 - 6447 WAIT PTS / 0 00:00:00 BASH 0 R 1000 5270 3383 99 95 15 - 1757 - PTS / 0 00:00 : 02 Oui 0 R 1000 5271 3383 0 80 0 - 2399 - PTS / 0 00:00:00 PS 

Pour définir une bonne valeur en dessous de 0 autorisation racine sont requises. Nice commencera toujours le programme, cependant, la bonne valeur sera définie sur 0. Ici, nous essayons de définir une bonne valeur sur -1 sans autorisation racine:

$ Nice -n -1 oui> / dev / null & [1] 5285 Nice: Impossible de définir la gentillesse: autorisation refusée $ ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 1000 3383 3380 0 80 0 - 6447 WAIT PTS / 0 00:00:00 BASH 0 R 1000 5285 3383 95 80 0 - 1757 - PTS / 0 00:00 : 07 Oui 0 R 1000 5295 3383 0 80 0 - 2399 - PTS / 0 00:00:00 PS 

Par conséquent, afin de définir une bonne valeur pour inférieure à 0, nous devons exécuter le programme ci-dessus comme root ou en utilisant sudo.

# Nice -n -1 oui> / dev / null & [1] 5537 # ps -l F S uid pid ppid c pri Ni addr sz wchan tty time cmd 4 s 0 5428 3383 0 80 0 - 14430 wait pts / 0 00:00:00 su 0 s 0 5436 5428 1 80 0 - 7351 wait pts / 0 00:00 : 00 bash 4 R 0 5537 5436 87 79-1 - 1757 - PTS / 0 00:00:04 Oui 4 R 0 5538 5436 0 80 0 - 2399 - PTS / 0 00:00:00 PS PS 

En utilisant la commande Renice

Dans la section précédente, nous avons appris à démarrer un programme avec une bonne valeur préréglante en utilisant la commande Nice. Ici, nous essayons de modifier la bonne valeur d'un programme en cours d'exécution en utilisant la commande Renice. Ici, nous avons un programme OUI Running avec une bonne valeur de 10:

$ ps -l F s uid pid ppid c pri Ni addr sz wchan tty time cmd 0 s 1000 3383 3380 0 80 0 - 6447 wait pts / 0 00:00:00 bash 0 r 1000 5645 3383 99 90 10 - 1757 - pts / 0 00:00 : 04 Oui 0 R 1000 5646 3383 0 80 0 - 2399 - PTS / 0 00:00:00 PS 

Pour modifier sa valeur, nous pouvons utiliser la commande Renice et fournir un PID et une bonne valeur. Changeons une bonne valeur à 15:

$ Renice -N 15 -P 5645 5645 (ID de processus) Ancienne priorité 10, nouvelle priorité 15 $ ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 1000 3383 3380 0 80 0 - 6447 WAIT PTS / 0 00:00:00 BASH 0 R 1000 5645 3383 99 95 15 - 1757 - PTS / 0 00:00 : 31 Oui 0 R 1000 5656 3383 0 80 0 - 2399 - PTS / 0 00:00:00 PS 

La règle à suivre est que l'utilisateur non super-super ne peut qu'augmenter la bonne valeur (donner moins de priorité) à n'importe quel processus. Si j'essaierais maintenant de passer à une bonne valeur de 15 en arrière à 10, il suivait l'erreur apparaîtrait:

$ Renice -N 10 -P 5645 Renice: Échec de la priorité pour 5645 (ID de processus): autorisation refusée 

La commande Renice donne également à un utilisateur racine la possibilité de modifier une bonne valeur des processus de tout utilisateur. Ceci est fait par l'interrupteur -u. La commande Linux suivante modifiera une priorité de tous les processus de l'utilisateur à -19.

# Renice -N -19 -U Lubos 1000 (ID utilisateur) ancienne priorité 0, nouvelle priorité -19 

Conclusion

Une belle commande peut être un outil pratique et est certainement facile à utiliser. Veuillez noter que vous pouvez également utiliser la commande supérieure pour Renice Process Valed.

Tutoriels Linux connexes:

  • Choses à installer sur Ubuntu 20.04
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Choses à faire après l'installation d'Ubuntu 22.04 Jammy Jellyfish…
  • Boucles imbriquées dans les scripts bash
  • Choses à installer sur Ubuntu 22.04
  • Installez Arch Linux dans VMware Workstation
  • Ubuntu 20.04 Guide
  • Comment doubler Kali Linux et Windows 10
  • Mint 20: Mieux que Ubuntu et Microsoft Windows?