Maison >Opération et maintenance >exploitation et maintenance Linux >Que signifie le processus sous Linux ?
Un processus est une instance d'un programme exécuté sous Linux et constitue l'unité de base pour la gestion des transactions ; un processus possède son propre environnement de traitement indépendant et ses propres ressources système. L'état d'un processus change, y compris sa création, sa planification et sa mort.
L'environnement d'exploitation de ce tutoriel : système linux5.9.8, ordinateur Dell G3.
Un processus est une instance d'un programme exécuté sous Linux.
Dans le système Linux, le système d'exploitation effectue les tâches une par une via des processus. Le processus est l'unité de base de la gestion des transactions. Le processus possède son propre environnement de traitement indépendant (par exemple : quelles variables d'environnement sont actuellement nécessaires, où se trouve le répertoire dans lequel le programme est en cours d'exécution, quel utilisateur exécute actuellement le programme, etc.) et des ressources système (telles que : l'occupation du processeur par le processeur). , mémoire, périphériques d'E/S, données, programmes).
Lorsque vous exécutez un programme dans un système Linux, le système crée un environnement spécifique pour le programme. Cet environnement contient tout ce dont le système a besoin pour exécuter le programme.
Chaque fois que vous exécutez une commande sous Linux, elle créera ou démarrera un nouveau processus. Par exemple, lorsque vous essayez d'exécuter la commande "ls -l" pour lister le contenu d'un répertoire, vous démarrez un processus. Si deux fenêtres de terminal sont affichées à l'écran, vous avez peut-être exécuté deux fois le même programme de terminal et il y aura deux processus de terminal.
Chaque fenêtre de terminal peut exécuter un Shell, et chaque Shell en cours d'exécution est un processus. Lorsque vous appelez une commande depuis le Shell, le programme correspondant sera exécuté dans un nouveau processus. Lorsque l'exécution du processus du programme est terminée, le processus du Shell reprendra son exécution.
Le système d'exploitation suit les processus via un code numérique appelé PID ou ID de processus. Chaque processus du système possède un PID unique.
Maintenant, nous utilisons un exemple pour comprendre le processus sous Linux. Nous exécutons la commande suivante sur la ligne de commande du Shell :
$ sleep 10 & [1] 3324
Comme le programme attendra 10 secondes, nous recherchons rapidement tout processus nommé sleep sur le Shell actuel :
$ ps -ef | grep sleep mozhiyan 3324 5712 cons1 17:11:46 /usr/bin/sleep
Nous voyons que le processus nommé /usr/bin/sleep
est en cours d'exécution sur le système (avec le même PID que nous avons obtenu dans la commande précédente).
Maintenant, nous essayons d'exécuter la commande sleep ci-dessus à partir de 3 fenêtres de terminal différentes en parallèle, le résultat de la commande ci-dessus sera similaire à ce qui suit :
$ ps -ef | grep sleep mozhiyan 896 5712 cons1 17:16:51 /usr/bin/sleep mozhiyan 5924 5712 cons1 17:16:52 /usr/bin/sleep mozhiyan 2424 5712 cons1 17:16:50 /usr/bin/sleep
Nous voyons que chaque instance du programme sleep crée un processus distinct.
Chaque processus Linux a un autre numéro d'identification, qui est l'ID du processus parent (ppid). Chaque processus utilisateur du système a un processus parent.
La commande "ps -f" listera le PID et le PPID du processus. Le résultat de cette commande est similaire au suivant :
$ ps -f UID PID PPID TTY STIME COMMAND mozhiyan 4124 228 cons0 21:37:09 /usr/bin/ps mozhiyan 228 1 cons0 21:32:23 /usr/bin/bash
Les commandes que vous exécutez à l'invite de ligne de commande Shell ont le processus Shell actuel comme processus parent. Par exemple, si vous entrez la commande ls à l'invite de ligne de commande du Shell, le Shell exécutera la commande ls. À ce moment, le noyau Linux copiera la page mémoire du Shell, puis exécutera la commande ls.
Sous Unix, chaque processus est créé à l'aide des méthodes fork et exec. Cependant, cette approche entraîne une perte de ressources système.
Sous Linux, la méthode fork est implémentée à l'aide de pages mémoire de copie sur écriture, elle provoque donc uniquement la perte de temps et de mémoire nécessaire pour copier la table des pages mémoire du processus parent et crée une tâche unique pour le processus enfant. structure.
Le mode copie sur écriture évite de créer des copies de structure inutiles lors de la création d'un nouveau processus. Par exemple, si l'utilisateur exécute la commande ls à l'invite de ligne de commande Shell, le noyau Linux créera un processus enfant Shell, c'est-à-dire que le processus Shell est le processus parent et le processus de commande ls est le processus enfant. Le processus de commande pointera vers ceci. La même page mémoire que le Shell, puis le processus enfant utilise la technologie de copie sur écriture pour exécuter la commande ls.
Statut du processus
Chaque processus Linux a son propre cycle de vie, tel que la création, l'exécution, l'arrêt et le nettoyage. Chaque processus possède également son propre statut, qui indique ce qui se passe actuellement dans le processus. L'état d'un processus change, y compris sa création, sa planification et sa mort.
Le processus peut avoir les états suivants :
D (état de veille ininterrompue) - le processus est en veille et ne peut pas être repris jusqu'à ce qu'un événement se produise.
R (Running Status) - Le processus est en cours d'exécution.
S (état de veille) - le processus n'est pas en cours d'exécution, mais attend un événement ou un signal.
T (état d'arrêt) - Le processus est arrêté par un signal, tel que le signal SIGINT ou SIGSTOP.
Z (État zombie) - Les processus marqués 21eba13340b1d3a525d7480ca5bbd370 sont des processus zombies et restent car leur processus parent les a détruits de manière appropriée. Si le processus parent se termine, ces processus seront détruits par le processus d'initialisation.
Pour afficher l'état du processus spécifié, vous pouvez utiliser la commande suivante :
ps -C processName -o pid=,cmd,stat
Par exemple :
$ ps -C sleep -o pid=,cmd,stat CMD STAT 9434 sleep 20 S
Recommandations associées : "Tutoriel vidéo Linux"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!