Les processus
Un processus sous Linux est une instance en cours d’exécution d’un programme. Lorsqu'un programme est lancé, il devient un processus qui peut être suivi, géré et manipulé par le système d'exploitation. Les processus sont un élément fondamental du fonctionnement de Linux, car ils permettent d'exécuter des commandes et des applications.
1. Qu'est-ce qu'un Processus ?
Un processus est une unité de programme en cours d'exécution. Il peut être un programme utilisateur comme un navigateur Web, un éditeur de texte, ou un service système. Chaque processus possède une structure particulière qui comprend :
PID (Process ID): Un numéro unique attribué par le système pour identifier le processus.
PPID (Parent Process ID): L'identifiant du processus parent, c'est-à-dire le processus qui a engendré le processus courant.
État: Chaque processus peut être dans différents états, comme en cours d'exécution, en attente, ou arrêté.
Utilisation des ressources: Comme l'utilisation de la mémoire et du processeur.
2. Types de Processus
Processus premier plan (Foreground Process): C’est un processus qui est lancé depuis un terminal et qui continue de fonctionner jusqu’à ce qu’il soit terminé ou que l’utilisateur l’interrompe.
Processus arrière-plan (Background Process): Ces processus sont exécutés en arrière-plan et permettent de libérer le terminal pour d’autres tâches. On peut démarrer un processus en arrière-plan en ajoutant le symbole
&à la fin d’une commande.
3. Commandes de Gestion des Processus
a. Afficher les Processus en Cours : ps
La commande ps est utilisée pour afficher une liste des processus en cours d'exécution. Par défaut, elle affiche uniquement les processus associés au terminal courant.
Exemple:
Pour obtenir plus d'informations, utilisez :
a: Affiche tous les processus associés à un terminal.u: Affiche les informations d'utilisation des ressources.x: Affiche également les processus sans terminal.
b. Afficher les Processus en Temps Réel : top
La commande top permet de visualiser en temps réel les processus en cours, triés par utilisation des ressources (comme l'utilisation du processeur et de la mémoire).
Exemple:
Vous pouvez appuyer sur
qpour quittertop.Pour une alternative plus moderne et plus lisible, vous pouvez utiliser
htop(qui doit être installé séparément).
c. Lancer un Processus en Arrière-Plan : &
Pour lancer un processus en arrière-plan, ajoutez un & à la fin de la commande.
Exemple:
Cela lance l’éditeur de texte gedit en arrière-plan, ce qui permet de continuer à utiliser le terminal.
d. Mettre un Processus en Pause et le Relancer : Ctrl+Z et bg/fg
Ctrl+Z: Met un processus en pause (le place en arrière-plan, dans un état suspendu).bg: Relance un processus mis en pause, mais en arrière-plan.fg: Relance un processus en premier plan.
Exemple:
Appuyez sur Ctrl+Z pour le suspendre, puis utilisez bg pour le remettre en arrière-plan.
e. Terminer un Processus : kill
La commande kill est utilisée pour terminer un processus à partir de son PID.
Syntaxe:
Pour forcer l'arrêt d'un processus, utilisez l'option -9:
Pour trouver le PID d’un processus, utilisez la commande ps ou top.
f. Trouver un Processus par Nom : pgrep
La commande pgrep permet de rechercher des processus par leur nom.
Exemple:
Cela renverra les PID de tous les processus liés à Firefox.
g. Changer la Priorité d’un Processus : nice et renice
Les priorités des processus déterminent combien de ressources système sont allouées à un processus particulier.
nice: Pour lancer un processus avec une priorité particulière.nice -n 10 commandeLe niveau de
niceva de -20 (priorité la plus élevée) à 19 (priorité la plus basse).renice: Pour changer la priorité d'un processus en cours d'exécution.sudo renice 5 -p [PID]
Comment sortir d'un processus actif en console Linux
Pour quitter un processus actif dans la console Linux, vous disposez de plusieurs options, en fonction de la situation :
Interruption d'un processus
Appuyez sur
Ctrl + Cpour forcer l'arrêt du processus. Cela envoie un signal d'interruption (SIGINT) au processus actif, lui demandant de s'arrêter immédiatement.
Suspension d'un processus
Appuyez sur
Ctrl + Zpour suspendre le processus en arrière-plan. Cela envoie un signalSIGTSTP(stop terminal) au processus.Après avoir suspendu le processus, vous pouvez le reprendre avec la commande
fg(pour le remettre en avant-plan) ou le laisser en arrière-plan avecbg.
4. Utiliser top ou htop pour gérer les processus
Lancez la commande
topouhtoppour afficher tous les processus en cours.Dans
top, identifiez le processus à interrompre en utilisant son PID et quittez-le en tapantk, puis entrez le PID et confirmez.
Chacune de ces méthodes vous permet de reprendre la main sur la console en quittant ou en suspendant le processus actif.
4. Arborescence des Processus : pstree
La commande pstree affiche les processus sous forme d'arborescence, ce qui est très utile pour voir les relations entre les processus.
Exemple:
5. États des Processus
Un processus sous Linux peut être dans l’un des états suivants :
Running (R): Le processus est en cours d'exécution.
Sleeping (S): Le processus est en attente d'un événement (comme l'attente d'une ressource).
Stopped (T): Le processus est arrêté, souvent par un signal comme
Ctrl+Z.Zombie (Z): Le processus est terminé, mais son PPID (processus parent) n'a pas encore récupéré son état de sortie. Les processus zombies ne consomment pas de ressources, mais ils indiquent souvent un problème de gestion des processus.
6. Démon (Daemon)
Un démon est un processus qui s'exécute en arrière-plan pour fournir des services au système. Par exemple, un serveur web est un démon qui répond aux requêtes HTTP.
Les noms des démons se terminent souvent par un
d, commesshd(le démon du service SSH) ouhttpd(le démon HTTP).
Les démons sont généralement démarrés au démarrage du système et fonctionnent sans interaction directe avec l'utilisateur.
7. Commandes Importantes pour les Processus
nohup: Lance un processus qui continue de fonctionner même si vous fermez le terminal.nohup commande &Cela est utile pour lancer des tâches de longue durée.
jobs: Affiche la liste des processus lancés depuis le terminal actuel qui sont en arrière-plan ou suspendus.jobs
8. Gestion des Services avec systemctl
La commande systemctl est utilisée pour gérer les services (qui sont souvent des démons). Par exemple, pour démarrer, arrêter ou vérifier l’état d’un service.
Exemples:
Démarrer un service :
sudo systemctl start nom_du_serviceArrêter un service :
sudo systemctl stop nom_du_serviceVérifier l'état d'un service :
sudo systemctl status nom_du_service
Conclusion
Les processus sont au cœur du fonctionnement de Linux, qu'il s'agisse de lancer des applications, d'exécuter des services en arrière-plan, ou de gérer des tâches système. Les commandes comme ps, top, kill, nice, et systemctl offrent un contrôle précis sur les processus et leurs priorités, ce qui est essentiel pour l’administration efficace d’un système Linux. Pour un administrateur ou un utilisateur avancé, maîtriser la gestion des processus est fondamental pour assurer la stabilité, la performance et la sécurité du système.