La gestion des processus sous Linux peut sembler intimidante pour un nouveau administrateur système (sysadmin) au début. Mais avec un peu d’explication et de démonstration, vous apprendrez comment trouver et exécuter des processus Linux n’est qu’une question d’utilisation des outils en ligne de commande tels que ps
et kill
.
Dans cet article, vous apprendrez les commandes pour localiser les processus en cours d’exécution et les processus errants, tuer (terminer) les processus en cours d’exécution, trouver les processus en arrière-plan, et bien plus encore sur n’importe quel système d’exploitation Linux.
À la fin de l’article, vous serez en mesure de gérer les processus en utilisant les numéros d’identification de processus (PID) à partir de la ligne de commande comme un pro Linux. Continuez à lire pour tout savoir sur les commandes de gestion des processus sous Linux!
Prérequis
Cet article va vous guider à travers la gestion des processus sous Linux. Si vous voulez mettre la main à la pâte, vous aurez besoin des éléments suivants:
- A Linux host, which can be a virtual machine or a physical machine.
- Pour essayer les exemples de PowerShell, installez PowerShell 7.1.1 sur un hôte Linux.
- A non-root user account. While root access is not required, there will be an example where the root user can kill the running process of another user.
Le choix de la distribution Linux que vous décidez d’utiliser vous appartient. Cet article sera basé sur Ubuntu 20.04 LTS. Cependant, les commandes sont standard pour le système d’exploitation Linux.
Prêt à commencer? Bien, plongeons-y.
Gestion des processus sous Linux
À l’occasion, vous pouvez rencontrer une situation où vous devez arrêter un processus en cours d’exécution sur un système Linux. Par exemple, vous pouvez avoir un script bash qui s’exécute selon un horaire. Ce script bash est configuré pour s’exécuter en tant qu’un autre utilisateur via une tâche cron (planificateur de processus Linux).
Parfois, ce script génère des processus errants qui peuvent entraîner l’échec du script. Comment tuer ces processus errants sans redémarrer le système ou arrêter le script?
Dans les prochaines sections, vous verrez les commandes utilisées pour localiser et terminer ou mettre fin à des processus sur un système Linux. Chaque section construira sur la précédente. Vous apprendrez les commandes ps
, top
, pgrep
, kill
, et pkill
, toutes natives à Linux.
En bonus, les commandes équivalentes PowerShell Get-Process
et Stop-Process
sont incluses si les commandes natives Linux ne sont pas à votre goût.
Outils pour Localiser les Processus
Avant de tuer un processus, vous devez localiser le processus correct à cibler. L’identifiant PID unique permet un ciblage précis. Continuez à lire pour apprendre comment localiser les processus corrects à terminer.
Utilisation de la commande ps
pour Afficher les Informations sur les Processus
Le État du processus ou la commande ps
affiche des informations relatives aux processus actifs sur un système Linux. Vous pouvez localiser un processus en cours d’exécution et même des processus en arrière-plan avec ps
.
La commande ps
affichera, par défaut, tous les processus pour l’identification de l’utilisateur effectif (EUID) de l’utilisateur actuel. En exécutant la commande ps
, comme indiqué ci-dessous, vous obtiendrez tous les processus en cours d’exécution que votre utilisateur peut terminer.

bkindle
.Recherche d’informations détaillées sur les processus en utilisant la commande top
Et si vous voulez trouver des informations constamment rafraîchissantes sur les processus en cours d’exécution et les mesures système, dans ce cas, vous pouvez utiliser la commande top
. Contrairement à ps
, la commande top
met à jour les informations sur les processus à l’écran à intervalles réguliers.
Lorsque vous exécutez la commande top
, vous verrez plus qu’un simple PID. Les détails du processus incluent les pourcentages CPU et mémoire, valeurs Nice (priorité de processus de planification CPU), et la priorité de processus (PR) définie par le noyau Linux.
Pour un administrateur système novice ou expérimenté, la commande top
est souvent l’outil principal pour gérer les ressources système vitales et les processus. Comme le montre l’exemple ci-dessous, la sortie de la commande top
affiche plus d’informations sur les processus que la commande ps
, y compris les métriques système globales.

top
command on Ubuntu Desktop 20.04 LTS showing all running PID’s.htop
est une variante améliorée de top
qui comprend diverses améliorations, telles qu’une sortie terminal colorisée.
Supposons que vous souhaitiez inspecter la mémoire ou les ressources CPU consommées par un processus. Dans ce cas, vous pouvez utiliser l’option p
de la commande top
comme indiqué ci-dessous.

Peut-être avez-vous besoin d’afficher tous les processus en cours d’exécution pour un nom d’utilisateur spécifique. La commande top
propose l’option u
pour afficher uniquement les processus d’un utilisateur spécifique. Comme illustré dans l’exemple ci-dessous, seuls les PID correspondant à l’ID utilisateur bkindle
sont affichés.

top
command displaying only processes for the user bkindle
.Localisation des PID de processus spécifiques avec la commande pgrep
À l’origine une commande Solaris, pgrep
a été porté pour une utilisation avec Linux. En combinant la puissance de recherche de la commande grep
et la gestion des processus de ps
, pgrep
offre une flexibilité pour trouver le processus exact à cibler.
Bien que ps
affiche plus d’informations, pgrep
est conçu pour ne retourner que le PID des processus trouvés. pgrep
aide à localiser le processus en utilisant les nombreux paramètres de recherche disponibles. Dans l’exemple suivant, pgrep
est utilisé pour rechercher tout processus correspondant à vmtoolsd
.

pgrep
to obtain all PIDs associated with vmtoolsd
.De même, spécifiez un ID utilisateur avec l’interrupteur u
pour récupérer uniquement les processus associés à cet utilisateur spécifique. Comme indiqué ci-dessous, seul un PID est renvoyé pour l’utilisateur bkindle
et le processus vmtoolsd
.

vmtoolsd
process associated with the user bkindle
.Recherche des processus avec Get-Process
de PowerShell sous Linux
Les commandes Linux classiques fonctionnent bien, mais saviez-vous que PowerShell peut également gérer les processus Linux? La cmdlet Get-Process
fonctionne de manière similaire à la commande Linux ps
et renvoie des informations sur les processus. Par exemple, peut-être que vous devez trouver tous les processus en cours d’exécution par l’utilisateur actuel, bkindle
. Comme indiqué ci-dessous, trouvez tous les PIDs (étiquetés ID par Get-Process
) de l’utilisateur bkindle
.

Get-Process
cmdlet.Connexe : Comment utiliser Where-Object de PowerShell pour filtrer toutes les choses
Après avoir appris à localiser différents processus, continuez à découvrir toutes les façons de terminer ou tuer un processus sous Linux !
Arrêt des processus avec les commandes Kill sous Linux
Dans les sections précédentes, vous avez appris comment localiser le PID du processus auquel vous voulez envoyer un signal de kill en utilisant les commandes natives Linux et PowerShell. Les sections suivantes expliqueront comment utiliser les programmes kill
et pkill
, ainsi que leurs signaux associés et les commutateurs en ligne de commande.
Signaux Linux et gestion des processus
Les signaux sont la méthode que Linux utilise pour communiquer avec les processus s’exécutant dans le système d’exploitation. Les trois signaux principaux que la commande kill
utilise pour terminer les processus sont :
- 1 (SIGHUP) – Termine les programmes interactifs et oblige les démons (services en arrière-plan) à relire les fichiers de configuration utilisés par le processus.
- 9 (SIGKILL) – Force le processus à se terminer sans effectuer de tâches de fermeture en douceur.
- 15 (SIGTERM) – Permet à un processus de se terminer en douceur, tel que la fermeture des fichiers ouverts lorsqu’il est terminé. C’est le signal par défaut utilisé lorsqu’aucun numéro n’est spécifié lors de l’utilisation de la commande kill.
Alors que cet article se concentre uniquement sur les trois principaux signaux utilisés pour tuer des processus, il existe un total de 64 signaux disponibles. Utilisez
kill -l
pour obtenir la liste des signaux et leur numéro correspondant.
Maintenant que vous comprenez les trois principaux signaux utilisés pour terminer un processus, apprenez comment tuer un processus dans les sections suivantes.
Utilisation de la commande kill
pour terminer un processus
Dans cet exemple suivant, vous utiliserez la commande kill
. Faites semblant un instant que vous exécutez une instance de PowerShell, nommée pwsh
, et que l’ID de processus attribué est 22687. Une façon de terminer ce processus est montrée ci-dessous.
- Utilisez
pgrep pwsh
pour déterminer l’ID de processus pour le processuspwsh
, utilisé dans la commandekill
. - Utilisez la commande
kill -s TERM 22687
pour terminer le processuspwsh
de manière propre. La commandeTERM
est associée au signal 15 (SIGTERM) et est indiquée en utilisant le paramètres
de la commandekill
. - Utilisez votre choix entre
top
,ps
oupgrep
pour vérifier que le PID n’est plus répertorié.
Voici un exemple du processus ci-dessus à partir d’un terminal bash Ubuntu 20.04 LTS.

kill
and associated commands to terminate the pwsh
process.La commande
killall
va terminer tous les processus en fonction de leur nom au lieu du PID, ce qui peut rendre cette commande assez destructive si elle est utilisée négligemment. Si vous choisissez d’utiliser cette commande, utilisez cependant l’optioni
pour que la commande demande confirmation.
Terminer les processus par leur nom avec la commande pkill
Vous avez peut-être remarqué que la commande kill
ne fonctionne qu’avec les identifiants de processus. Cela peut rendre la terminaison d’un processus un processus complexe en plusieurs étapes. La commande pkill
, incluse dans les paquets procps et procps-ng, termine un processus en fonction de son nom recherché.
Fonctionnellement, la commande pkill
agit comme un enrobage autour du programme pgrep
. La commande pkill
envoie un signal spécifié à chaque processus trouvé au lieu de simplement répertorier les PIDs dans le terminal. pkill
diffère de la commande kill
en ce que pkill
peut uniquement utiliser le nom d’un processus, et non le PID.
La commande
pkill
n’est pas disponible par défaut dans Ubuntu 20.04 LTS. Vous devrez télécharger et installer l’application. Pour ce faire, exécutezsudo apt install mcollective-plugins-process -y
.
Pour tuer un processus avec la commande pkill
, suivez les étapes suivantes:
- Utilisez
ps
pour vérifier si l’application nano (un éditeur de texte en ligne de commande) est actuellement en cours d’exécution. Cette étape est facultative, mais elle constitue une vérification de sécurité avant de tuer un processus. - Utilisez
pkill -9 nano
pour terminer de force l’application nano.
Voici un exemple du processus ci-dessus à partir d’un terminal bash Ubuntu 20.04 LTS.

pkill
command to forcefully terminate the nano process.Tuer un processus avec la commande Top
Lorsque vous exécutez la commande top
pour voir les processus en cours d’exécution, vous pouvez tuer un processus donné avec la touche k. Vous verrez une invite interactive demandant le PID d’un processus à tuer.
Comme illustré ci-dessous, exécutez la commande top
et appuyez sur k. Entrez le PID que vous souhaitez tuer et appuyez sur la touche Entrée pour terminer immédiatement le PID.

top
to specify a process to terminate using the k keystroke.Ensuite, apprenez une alternative de plus aux commandes natives de Linux en utilisant la commande PowerShell Stop-Process
!
Utilisation de la commande Stop-Process
de PowerShell pour terminer un processus
Si les commandes natives de Linux ne sont pas votre style, PowerShell a ce qu’il vous faut ! Tout comme avec la commande kill
, vous pouvez terminer des processus en utilisant la Stop-Process
cmdlet sous Linux. Encore une fois, faites comme si vous exécutiez un processus PowerShell pwsh
.
- Trouvez le PID avec
Get-Process -ProcessName 'pwsh'
et notez les PIDs à terminer. - Utilisez
Stop-Process -Id 29992,30014
pour terminer les processus multiples renvoyés. - Utilisez
Get-Process -ProcessName 'pwsh'
et vérifiez les PIDs,29992
et30014
ne sont plus répertoriés, ce qui signifie qu’ils ont été terminés.
Vous pouvez également utiliser
Get-Process
et la méthodekill
pour terminer un ou plusieurs processus :(Get-Process -Id [PID]).Kill()
ou(Get-Process -Id [PID1,2,3,4]).Kill()
.Exercez la prudence lors de l’utilisation du paramètre
ProcessName
. L’utilisation de ce paramètre se comporte de manière similaire à la commandekillall
, et va terminer tous les processus correspondant aux noms fournis.
Voici un exemple du processus ci-dessus à partir d’un terminal bash Ubuntu 20.04 LTS.

Stop-Process
to kill processes in Linux.Étapes suivantes
Vous devriez maintenant savoir les nombreuses façons de trouver et terminer les processus sous Linux ! Pour votre prochain défi, essayez d’arrêter des processus à distance en utilisant des connexions SSH ou en tuant des processus qui pourraient s’exécuter dans des conteneurs.
Connexe : Un utilisateur Windows dans un monde Linux : Configuration de SSH sous Linux