Tout ce que vous devez savoir sur les processus dans Linux [Guide complet]

Tout ce que vous devez savoir sur les processus dans Linux [Guide complet]

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 Linux

Cré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 HTTPD 
Trouver l'ID de processus Linux

Pour trouver l'ID de processus et l'ID de processus parent du shell actuel, exécutez:

$ echo $$ $ echo $ ppid 
Trouver 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:

# cloudcmd 
Dé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 & # emplois 
Dé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% 1 
Jobs 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:

# haut 
Ré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:

# regards 
Regards - 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:

  1. 20 outils de ligne de commande pour surveiller les performances Linux
  2. 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 tecmint 
Contrôler les processus Linux

Pour apprendre à utiliser ces commandes en profondeur, pour tuer / terminer les processus actifs dans Linux, ouvrez les liens ci-dessous:

  1. Un guide pour tuer, pkill et killall commandes pour mettre fin à la procédure Linux
  2. 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 -l 
Liste 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:

$ top 
Ré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.

  1. Gestion du processus Linux: démarrage, arrêt et tout le reste
  2. Trouvez les 15 meilleurs processus par utilisation de la mémoire avec «haut» en mode lot
  3. Trouver les processus de fonctionnement supérieur par la mémoire la plus élevée et l'utilisation du processeur dans Linux
  4. 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.