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 !
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 :
- Processus en avant-plan : Tapez la commande et appuyez sur Entrée.
- 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 :
-
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é.
-
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