Agence web » Actualités du digital » Que sont les PID Unix et comment fonctionnent-ils?

Que sont les PID Unix et comment fonctionnent-ils?

que-sont-les-pid-unix-et-comment-fonctionnent-ils-cloudsavvy-2547131

Chaque fois qu'un processus est créé dans un système Linux, il reçoit un nouveau numéro qui l'identifie auprès d'autres applications. Il s'agit de l'ID de processus, ou PID, et il est utilisé dans tout le système pour gérer les processus en cours d'exécution.

Comment fonctionnent les processus sous Linux

Le premier processus exécuté par Linux est appelé systemd, qui reçoit le PID 0. Tous les autres processus sont générés en tant qu'enfants de systemd. Les premiers seront généralement des éléments Linux de bas niveau dont vous n'aurez pas à vous soucier, mais plus loin dans l'arborescence, le système commencera à lancer des processus au niveau de l'utilisateur tels que MySQL et Nginx.

Chaque processus a également un PPID, qui stocke le PID du parent par lequel le processus a été créé. Il existe également un TTY de processus, qui stocke l'ID du terminal que vous avez utilisé pour lancer le processus, et l'UID, qui stocke l'ID de l'utilisateur qui l'a créé. Tout processus sans TTY est généralement appelé un démon, un terme utilisé pour désigner les processus système s'exécutant en arrière-plan qui n'ont pas de terminal de contrôle.

Chaque fois qu'un processus se ferme, ce PID est alors disponible pour un autre processus à utiliser. Chaque processus se ferme également avec un code de sortie, généralement utilisé pour indiquer si une erreur s'est produite ou non. Le code de sortie 0 est une sortie propre, tout ce qui est supérieur est une erreur spécifique.

Sur une note plus technique, les PID sont une partie importante des espaces de noms Linux. Les espaces de noms masquent certaines parties du système des processus s'exécutant dans différents espaces de noms, ce qui alimente les outils de conteneurisation comme Docker. Avec les espaces de noms, l'arborescence PID est coupée à une certaine branche, et seule cette branche est donnée au processus conteneurisé. Cette branche redémarre à partir du PID 1, elle apparaît donc au conteneur comme si elle s'exécutait dans une installation Linux entièrement nouvelle.

Affichage des processus

Pour obtenir une liste complète des processus, vous pouvez exécuter le ps commander:

sudo ps -e

Ce qui produira une très longue liste de tous les processus en cours, ce qui est certes un peu difficile à parcourir.

1598537494_774_que-sont-les-pid-unix-et-comment-fonctionnent-ils-cloudsavvy-7960099

Vous pouvez filtrer les résultats en redirigeant la sortie vers grep, comme ps n'a pas de fonction de recherche intégrée:

sudo ps -e | grep "processname"

Bien que vous deviez être averti que, assez curieusement, cela correspondra également au nouveau grep processus, comme ps affiche les arguments de commande, qui incluent votre chaîne correspondante, qui correspond évidemment à elle-même. Si vous avez juste besoin du PID d'un nom de processus donné, le pgrep La commande renvoie simplement le PID et rien d'autre.

Un visualiseur beaucoup plus utile est le top commande, qui agit comme un gestionnaire de tâches depuis votre terminal. Il montre tous les processus classés par utilisation du processeur, ainsi que certaines statistiques générales du système:

1598537494_141_que-sont-les-pid-unix-et-comment-fonctionnent-ils-cloudsavvy-7781113

Si vous utilisez un bureau Linux, cela montre également les applications en cours d'exécution, bien que la plupart des applications se multithread elles-mêmes, d'où la raison pour laquelle cette liste est remplie par Google Chrome s'exécutant sur plusieurs processus avec différents PID.

Arrêt des processus

En réalité, vous ne ferez pas grand-chose avec le processus réel autre que de le désactiver, car vous n'aurez pas à gérer la création de processus. (Elle est gérée automatiquement lorsque vous exécutez une commande ou un script.) La commande pour ce faire est nommée succinctement kill, qui prend un PID donné et arrête ce processus:

sudo kill 40589

Vous pouvez également tuer tous les processus avec un nom donné en utilisant le killall commander. Par exemple, pour libérer de la RAM sur votre système, vous pouvez exécuter:

sudo killall chrome

De toute évidence, ce n’est pas la meilleure façon de fermer les applications de bureau, mais la plupart des processus ne poseront pas trop de problème en fermant de cette façon.

Cependant, si le processus est un service Linux, vous souhaiterez plutôt utiliser le service commande d'interagir avec lui. Par exemple, recharger nginx:

service nginx reload

Ou désactivez-le:

service nginx stop

Fichiers PID

Un ID de processus n'identifie de manière unique un processus que tant que ce processus est en cours d'exécution. Si vous devez redémarrer Nginx, un nouvel ID de processus peut lui être attribué.

C'est là que les fichiers PID entrent en jeu; il s’agit d’une forme de communication inter-processus, essentiellement un fichier qui stocke le PID actuel d’un processus donné. Un autre processus peut lire ce fichier et connaître intrinsèquement, par exemple, quel est le PID de MySQL. Lorsque MySQL démarre, il écrit son propre PID dans ce fichier pour que tout le système puisse le voir.

Habituellement, les fichiers PID sont stockés dans /var/run/, bien que ce ne soit qu'une pratique courante et non obligatoire, de la même manière que les fichiers journaux sont stockés dans /var/log/.

La plupart des processus avec des fichiers PID n'en auront qu'un seul à la fois, ce qui se fait à l'aide de fichiers de verrouillage. Les fichiers de verrouillage sont un moyen de définir un indicateur qui ne permet qu'un seul processus à la fois. Lorsqu'un processus comme Nginx démarre, il vérifie si le fichier de verrouillage existe, et si ce n'est pas le cas, il procédera au lancement normalement. Mais s'il est déjà là, Nginx lancera une erreur et refusera de démarrer.

★★★★★