Tout ce que vous devez savoir sur les processus dans Linux [Guide complet]
- 1854
- 367
- Emilie Colin
Dans cet article, nous parcourons une compréhension de base des processus et examinerons brièvement comment gérer les processus dans Linux en utilisant certaines commandes.
UN processus fait référence à un programme en exécution; C'est une instance en cours d'exécution d'un programme. Il est composé de l'instruction du programme, des données lues à partir de fichiers, d'autres programmes ou des entrées d'un utilisateur système.
Types de processus
Il existe fondamentalement deux types de processus dans Linux:
- Processus de premier plan (également appelé processus interactifs) - Ceux-ci sont initialisés et contrôlés par le biais d'une session terminale. En d'autres termes, il doit y avoir un utilisateur connecté au système pour démarrer de tels processus; Ils n'ont pas commencé automatiquement dans le cadre des fonctions / services du système.
- Processus en arrière-plan (également appelés processus non interactifs / automatiques) - sont des processus non connectés à un terminal; Ils ne s'attendent à aucune entrée utilisateur.
Qu'est-ce que les démons
Ce sont des types spéciaux de processus d'arrière-plan qui commencent au démarrage du système et continuent d'exécuter pour toujours en tant que service; Ils ne meurent pas. Ils sont démarrés comme des tâches système (exécuter en tant que services), spontanément. Cependant, ils peuvent être contrôlés par un utilisateur via le processus init.
État du processus LinuxCréation d'un processus dans Linux
Un nouveau processus est normalement créé lorsqu'un processus existant fait une copie exacte de lui-même en mémoire. Le processus enfant aura le même environnement que son parent, mais seul le numéro d'identification du processus est différent.
Il existe deux façons conventionnelles utilisées pour créer un nouveau processus dans Linux:
- Utilisation de la fonction System () - Cette méthode est relativement simple, cependant, elle est inefficace et présente considérablement certains risques de sécurité.
- Utilisation de la fonction fork () et exec () - Cette technique est un peu avancée mais offre une plus grande flexibilité, une vitesse, ainsi que la sécurité.
Comment Linux identifie-t-il les processus?
Étant donné que Linux est un système multi-utilisateurs, ce qui signifie que différents utilisateurs peuvent exécuter divers programmes sur le système, chaque instance en cours d'exécution d'un programme doit être identifiée de manière unique par le noyau.
Et un programme est identifié par son identifiant de processus (Piquer) ainsi que l'identifiant des processus parentaux (PPID), Par conséquent, les processus peuvent être classés en:
- Processus parentaux - Ce sont des processus qui créent d'autres processus pendant l'exécution.
- Processus enfants - Ces processus sont créés par d'autres processus pendant l'exécution.
Le processus d'initial
Init Le processus est la mère (parent) de tous les processus sur le système, c'est le premier programme qui est exécuté lorsque le système Linux est enraciné; Il gère tous les autres processus du système. Il est démarré par le noyau lui-même, donc en principe, il n'a pas de processus parent.
Le processus init a toujours un ID de processus de 1. Il fonctionne comme un parent adoptif pour tous les processus orphelins.
Vous pouvez utiliser le commande pidof Pour trouver l'ID d'un processus:
# PiDOF Systemd # PiDOF TOP # PIDOF HTTPDTrouver l'ID de processus Linux
Pour trouver l'ID de processus et l'ID de processus parent du shell actuel, exécutez:
$ echo $$ $ echo $ ppidTrouver l'ID de processus parent Linux
Démarrage d'un processus dans Linux
Une fois que vous avez exécuté une commande ou un programme (par exemple CloudCMD - CloudCommander), il commencera un processus dans le système. Vous pouvez démarrer un processus de premier plan (interactif) comme suit, il sera connecté au terminal et un utilisateur peut l'envoyer l'entrée:
# cloudcmdDémarrer le processus interactif Linux
Jobs d'arrière-plan Linux
Pour démarrer un processus en arrière-plan (non interactif), utilisez le &
Symbole, ici, le processus ne lit pas les entrées d'un utilisateur jusqu'à ce qu'elle soit déplacée vers le premier plan.
# cloudcmd & # emploisDémarrer le processus Linux en arrière-plan
Vous pouvez également envoyer un processus à l'arrière-plan en le suspendant en utilisant [Ctrl + Z]
, Cela enverra le Sigstop signal au processus, arrêtant ainsi ses opérations; il devient inactif:
# TAR -CF Backup.TAR / BACKUPS / * #press ctrl + z # emplois
Pour continuer à exécuter la commande susmentionnée en arrière-plan, utilisez le bg commande:
# bg
Pour envoyer un processus d'arrière-plan au premier plan, utilisez le FG Commande avec l'identifiant de travail comme tel:
# emplois # fg% 1Jobs de processus d'arrière-plan Linux
Vous pouvez également aimer: comment démarrer la commande Linux en arrière-plan et détacher le processus dans le terminal
États d'un processus dans Linux
Pendant l'exécution, un processus passe d'un État à un autre en fonction de son environnement / circonstances. Dans Linux, un processus a les états possibles suivants:
- En cours - Ici, il est en cours d'exécution (c'est le processus actuel du système), soit il est prêt à s'exécuter (il attend d'être affecté à l'un des processeurs).
- En attendant - Dans cet état, un processus attend qu'un événement se produise ou pour une ressource système. De plus, le noyau différencie également deux types de processus d'attente; Les processus d'attente interruptibles - peuvent être interrompus par des signaux et des processus d'attente sans interruption - attendent directement sur des conditions matérielles et ne peuvent pas être interrompus par aucun événement / signal.
- Arrêté - Dans cet état, un processus a été arrêté, généralement en recevant un signal. Par exemple, un processus qui est débogué.
- Zombi - Ici, un processus est mort, il a été interrompu mais il a toujours une entrée dans la table de processus.
Comment afficher les processus actifs dans Linux
Il existe plusieurs outils Linux pour visualiser / répertorier les processus en cours d'exécution sur le système, les deux commandes PS et Top Traditional et bien connues:
1. commande ps
Il affiche des informations sur une sélection des processus actifs sur le système comme indiqué ci-dessous:
# ps # ps -e | dirigerÉnumérez les processus actifs Linux
2. Top - outil de surveillance du système
Top est un outil puissant qui vous offre une vue dynamique en temps réel d'un système en cours d'exécution, comme indiqué dans la capture d'écran ci-dessous:
# hautRépertoriez les processus d'exécution de Linux
Lisez ceci pour plus d'exemples d'utilisation des meilleurs: 12 exemples de commande supérieurs dans Linux
3. Placements - outil de surveillance du système
regards est un outil de surveillance du système relativement nouvel avec des fonctionnalités avancées:
# regardsRegards - surveillance du processus Linux
Pour un guide d'utilisation complet, lisez: Glances - Un outil avancé de surveillance du système en temps réel pour Linux
Il existe plusieurs autres outils de surveillance du système Linux utiles que vous pouvez utiliser pour répertorier les processus actifs, ouvrez le lien ci-dessous pour en savoir plus à leur sujet:
- 20 outils de ligne de commande pour surveiller les performances Linux
- 13 outils de surveillance Linux plus utiles
Comment contrôler les processus dans Linux
Linux propose également quelques commandes pour contrôler les processus tels que Kill, Pkill, Pgrep et Killall, ci-dessous quelques exemples de base de la façon de les utiliser:
$ pgrep -u tecmint top $ kill 2308 $ pgrep -u tecmint top $ pgrep -u tecmint regards $ pkill regards $ pgrep -u tecmintContrôler les processus Linux
Pour apprendre à utiliser ces commandes en profondeur, pour tuer / terminer les processus actifs dans Linux, ouvrez les liens ci-dessous:
- Un guide pour tuer, pkill et killall commandes pour mettre fin à la procédure Linux
- Comment trouver et tuer des processus de course à Linux
Notez que vous pouvez les utiliser pour tuer des applications insensibles à Linux lorsque votre système gèle.
Envoi de signaux aux processus
Le moyen fondamental de contrôler les processus dans Linux est de leur envoyer des signaux. Il existe plusieurs signaux que vous pouvez envoyer à un processus, pour afficher tous les signaux exécutés:
$ kill -lListe tous les signaux Linux
Pour envoyer un signal à un processus, utilisez les commandes Kill, Pkill ou Pgrep que nous avons mentionnées plus tôt. Mais les programmes ne peuvent répondre aux signaux que s'ils sont programmés pour reconnaître ces signaux.
Et la plupart des signaux sont pour une utilisation interne par le système ou pour les programmeurs lorsqu'ils écrivent du code. Voici des signaux utiles à un utilisateur système:
- Sighup 1 - envoyé à un processus lorsque son terminal de contrôle est fermé.
- Sigint 2 - envoyé à un processus par son terminal de contrôle lorsqu'un utilisateur interrompt le processus en appuyant
[Ctrl + C]
. - Sigquit 3 - envoyé à un processus si l'utilisateur envoie un signal de quitte
[Ctrl + D]
. - Sigkill 9 - Ce signal se termine immédiatement (tue) un processus et le processus n'effectuera aucune opération de nettoyage.
- Sigterm 15 - C'est un signal de terminaison de programme (Kill enverra cela par défaut).
- Sigtstp 20 - envoyé à un processus par son terminal de contrôle pour lui demander de s'arrêter (arrêt du terminal); initié par l'utilisateur en appuyant
[Ctrl + Z]
.
Voici des exemples de commandes de kill pour tuer l'application Firefox en utilisant son PID une fois qu'il a gelé:
$ pidof firefox $ tuer 9 2687 ou $ kill -Kill 2687 ou $ kill -sigkill 2687
Pour tuer une application en utilisant son nom, utilisez PKILL ou KILLALL comme tel:
$ pkill firefox $ killall firefox
Changer la priorité du processus Linux
Sur le système Linux, tous les processus actifs ont une priorité et une bonne valeur. Les processus avec une priorité plus élevée obtiendront normalement plus de temps CPU que les processus de priorité plus faibles.
Cependant, un utilisateur système avec des privilèges racine peut influencer cela avec le bon et Renice commandes.
De la sortie de la commande supérieure, le NI montre la bonne valeur de processus:
$ topRépertoriez les processus d'exécution de Linux
Utilisez le bon commande pour définir une bonne valeur pour un processus. Gardez à l'esprit que les utilisateurs normaux peuvent attribuer une bonne valeur de zéro à 20 aux processus qu'ils possèdent.
Seul l'utilisateur racine peut utiliser des valeurs agréables négatives.
Pour Renice La priorité d'un processus, utilisez le Renice Commande comme suit:
$ Renice +8 2687 $ Renice +8 2103
Consultez nos articles utiles sur la façon de gérer et de contrôler les processus Linux.
- Gestion du processus Linux: démarrage, arrêt et tout le reste
- Trouvez les 15 meilleurs processus par utilisation de la mémoire avec «haut» en mode lot
- Trouver les processus de fonctionnement supérieur par la mémoire la plus élevée et l'utilisation du processeur dans Linux
- Comment trouver un nom de processus en utilisant le numéro PID dans Linux
C'est tout pour le moment! Avez-vous des questions ou des idées supplémentaires, partagez-les avec nous via le formulaire de rétroaction ci-dessous.
- « Comment effectuer des opérations d'auto-guérison et de rééquilibre dans Gluster File System - Partie 2
- Comment activer le partage de bureau dans Ubuntu et Linux Mint »