Gestion des processus Unix/Linux

Bonjour, aspirants programmeurs ! Aujourd'hui, nous allons entreprendre un voyage passionnant à travers le monde des processus Unix/Linux. En tant que votre enseignant de science informatique bienveillant du quartier, je suis ravi de vous guider à travers ce concept fondamental. Ne vous inquiétez pas si vous êtes nouveau dans la programmation - nous allons commencer par les bases et progresser pas à pas. Alors, prenez une tasse de café (ou de thé, si c'est votre truc), et plongons dedans !

Unix / Linux - Processes

Qu'est-ce qu'un processus ?

Avant de commencer, comprenons ce qu'est réellement un processus. Imaginez que vous êtes dans une cuisine animée. Chaque cuisinier travaillant sur un plat spécifique peut être considéré comme un processus. Ils ont leurs propres ingrédients (ressources), une recette (programme), et un objectif (sortie). Dans le monde informatique, un processus est simplement un programme en exécution.

Démarrer un processus

Démarrer un processus dans Unix/Linux est aussi simple que pie ! Vous pouvez le faire de deux principales manières :

  1. Processus en avant-plan : Tapez la commande et appuyez sur Entrée.
  2. Processus en arrière-plan : Ajoutez un esperluette (&) à la fin de la commande.

Regardons quelques exemples :

# Processus en avant-plan
$ ls -l

# Processus en arrière-plan
$ long_running_command &

Dans le premier exemple, ls -l s'exécute en avant-plan, vous montrant le contenu du répertoire. Dans le second, la commande s'exécute en arrière-plan, vous permettant de continuer à utiliser le terminal.

Lister les processus en cours

Maintenant, que faire si vous voulez voir tous les cuisiniers (processus) travaillant dans votre cuisine (système) ? C'est là que la commande ps devient utile !

$ ps aux

Cette commande vous montrera tous les processus en cours. C'est comme jeter un œil dans chaque coin de votre cuisine !

Voici une explication de ce que vous verrez :

Colonne Description
USER Propriétaire du processus
PID Identifiant du processus
%CPU Utilisation du CPU
%MEM Utilisation de la mémoire
VSZ Taille de la mémoire virtuelle
RSS Taille du jeu de résidence
TTY Type de terminal
STAT État du processus
START Heure de début
TIME Temps CPU
COMMAND Nom de la commande

Arrêter les processus

Parfois, un processus peut devenir incontrôlable (comme un cuisinier qui brûle tout). Dans de tels cas, vous devez l'arrêter. Voici comment faire :

$ kill PID

Remplacez PID par l'Identifiant du Processus que vous souhaitez terminer. Si vous êtes particulièrement sévère, vous pouvez utiliser :

$ kill -9 PID

C'est comme virer le cuisinier sur-le-champ - c'est une termination forcée !

Processus parent et processus enfant

Dans Unix/Linux, les processus ont un arbre familial. Lorsqu'un processus crée un autre processus, il devient un parent, et le nouveau processus est son enfant. C'est comme un chef (processus parent) assignant des tâches à des sous-chefs (processus enfant).

Vous pouvez voir cette relation en utilisant :

$ pstree

Cette commande vous montre l'arbre des processus, illustrant les relations parent-enfant.

Processus zombie et orphelin

Parlons maintenant de certains types spéciaux de processus :

  1. Processus zombie : Un processus enfant qui a terminé son exécution mais qui a toujours une entrée dans le tableau des processus. C'est comme un cuisinier qui a fini son plat mais n'a pas encore déconnecté.

  2. Processus orphelin : Un processus dont le parent a terminé ou a été terminé, mais qui continue de s'exécuter. Imaginez un sous-chef travaillant après que le chef principal est rentré chez lui.

Pour voir si vous avez des processus zombie, vous pouvez utiliser :

$ ps aux | grep Z

Processus démon

Les processus démon sont comme le personnel de cuisine qui travaille 24h/24. Ils s'exécutent en arrière-plan et fournissent divers services. Par exemple, le démon sshd écoute les connexions SSH entrantes.

Pour lister tous les processus démon, vous pouvez utiliser :

$ ps -eo 'tty,pid,comm' | grep ^?

La commande top

La commande top est votre moniteur tout-en-un de cuisine. Elle fournit une vue dynamique et en temps réel du système en cours d'exécution. Voici comment l'utiliser :

$ top

Vous verrez un tableau similaire à ps, mais il se met à jour en temps réel. C'est comme avoir un flux en direct de votre cuisine !

ID de tâche versus ID de processus

Enfin, clarifions la différence entre ID de tâche et ID de processus :

  • Identifiant de processus (PID) : Un identifiant unique pour chaque processus dans le système.
  • ID de tâche : Un numéro assigné par le shell à un processus démarré en arrière-plan.

Vous pouvez voir les IDs de tâche en utilisant :

$ jobs

Et vous pouvez ramener une tâche en arrière-plan en avant-plan en utilisant :

$ fg %job_id

souvenez-vous, les IDs de tâche sont spécifiques à votre session shell actuelle, tandis que les PIDs sont systématiques.

Et voilà, les amis ! Nous avons couvert les bases de la gestion des processus Unix/Linux. Souvenez-vous, la pratique rend parfait, donc n'hésitez pas à essayer ces commandes sur votre système. Soyez simplement prudent avec la commande kill - nous ne voulons pas de terminations accidentelles dans notre cuisine !

En conclusion, je suis rappelé d'un incident amusant de mes premiers jours d'enseignement. J'ai une fois accidentellement tué mon processus d'éditeur de texte en démontrant la commande kill, perdant une heure de travail non sauvegardé. Que cela soit une leçon - toujours sauvegardez votre travail avant de jouer avec les processus !

Continuez à cuire ces processus, et bon codage !

Credits: Image by storyset