Que sont les PID Unix et comment fonctionnent-ils?

Contenu

Processus créé sur un système Linux.

Chaque fois qu'une procédure est créée sur un système Linux, il se voit attribuer un nouveau numéro qui l'identifie par rapport à d'autres applications. C'est l'identifiant de la procédure, o PID, et est utilisé dans tout le système pour gérer les processus en cours.

Comment fonctionnent les processus sous Linux

La première procédure exécutée par Linux s'appelle systemd, réception du PID 0. Tous les autres processus sont générés en tant qu'enfants de systemd. Les premiers seront généralement des choses Linux de bas niveau dont vous n'avez pas à vous soucier, mais plus bas dans l'arbre, le système commencera à lancer des processus au niveau utilisateur comme MySQL et Nginx.

Chaque procédure a également un PPID, qui stocke le PID du parent par lequel la procédure a été créée. Il existe également un processus TTY, qui stocke l'ID du terminal que vous avez utilisé pour démarrer la procédure, y UID, qui stocke l'ID de l'utilisateur qui l'a créé. Toute procédure pour laquelle il manque généralement un ATS est appelée diable, une définition utilisée pour désigner les processus système qui s'exécutent en arrière-plan et n'ont pas de terminal de contrôle.

Chaque fois qu'une procédure est fermée, ce PID est activé pour être utilisé par une autre procédure. Chaque procédure est également clôturée avec un code de sortie, qui est généralement utilisé pour indiquer si une erreur s'est produite ou non. Le code de sortie 0 c'est une sortie propre, tout ce qui est plus grand 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 des espaces de noms, l'arbre PID est coupé à une certaine branche, et seule cette branche est livrée à la procédure conteneurisée. Cette branche redémarre à partir du PID 1, le conteneur semble donc fonctionner sur une toute nouvelle installation Linux.

Processus de visualisation

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

sudo ps -e

Ce qui va générer une très longue liste de tous les processus en cours d'exécution, ce qui est certainement un peu difficile à naviguer.

Une liste complète des processus.

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

sudo ps -e | grep "nom du processus"

Même si vous devez être prévenu que, Curieusement, cela correspondra également au nouveau grep traiter, Quoi ps afficher les arguments de la commande, qui incluent votre chaîne correspondante, qui correspond évidemment à lui-même. Si vous n'avez besoin que du PID d'un nom de procédure donné, les pgrep La commande renvoie juste le PID et rien d'autre.

Une visionneuse beaucoup plus utile est la top commander, qui fait office de gestionnaire de tâches depuis votre terminal. Affiche tous les processus triés par utilisation du processeur, ainsi que quelques statistiques générales du système:

La commande Top affiche tous les processus triés par utilisation du processeur, ainsi que quelques statistiques générales du système.

Si vous utilisez un bureau Linux, cela montre également les applications en cours d'exécution en ce moment, même si la plupart des applications seront multi-thread, par conséquent, Google Chrome remplit cette liste s'exécutant dans plusieurs processus avec différents PID.

Arrêter les processus

Être réaliste, ne fera pas grand-chose avec la procédure actuelle, à part l'arrêter, puisque vous n'aurez pas à gérer la création de la procédure. (Géré automatiquement lorsque vous exécutez une commande ou un script). La commande pour le faire s'appelle succinctement kill, qui prend un PID donné et ferme cette procédure:

sudo tuer 40589

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

sudo killall chrome

Évidemment, ce n'est pas la meilleure façon de fermer les applications de bureau, mais la plupart des processus ne généreront pas beaucoup de bruit s'ils sont fermés de cette façon.

Malgré cela, si la procédure est un service Linux, vous voudrez utiliser le service commande pour interagir avec elle. Par exemple, rechargement de nginx:

recharger nginx de service

Ou l'éteindre:

arrêt de service nginx

Fichiers PID

Un ID de procédure n'identifie de manière unique une procédure que pendant l'exécution de cette procédure. Si vous devez redémarrer Nginx, il est possible qu'un nouvel ID de procédure lui soit attribué.

C'est là que les fichiers PID entrent en jeu; ils sont une forme de communication entre les processus, essentiellement un fichier qui stocke le PID actuel d'une procédure donnée. Une autre procédure peut lire ce fichier et savoir intrinsèquement, par exemple, quel est le PID de MySQL. Quand MySQL démarre, écrivez votre propre PID dans ce fichier pour que l'ensemble du système le voie.

En général, Les fichiers PID sont stockés dans /var/run/, même s'il ne s'agit que d'une pratique courante et non d'une obligation, similaire à la façon dont les fichiers journaux sont stockés dans /var/log/.

La plupart des processus avec des fichiers PID en auront également un en même temps, ce qui est fait avec l'aide de fichiers de verrouillage. Les fichiers de verrouillage sont un moyen de déterminer un indicateur qui n'autorise qu'une seule procédure à démarrer à la fois. Lorsqu'une procédure comme Nginx est lancée, vérifie si le fichier de verrouillage existe et, si ce n'est pas comme ça, démarrera normalement. Mais si c'est déjà là, Nginx lancera une erreur et refusera de démarrer.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.