La gestion des processus sous Linux peut sembler décourageante pour un nouvel administrateur système (sysadmin) au premier abord. Mais avec une petite explication et une démonstration, vous apprendrez comment trouver et exécuter les processus de mise à mort Linux en utilisant simplement des outils de ligne de commande tels que ps
et kill
.
Dans cet article, vous apprendrez les commandes permettant de localiser les processus en cours d'exécution et errants, de tuer (terminer) les processus en cours d'exécution, de rechercher les processus d'arrière-plan et bien plus encore sur n'importe quel système d'exploitation Linux.
À la fin de l'article, vous gérerez des processus basés sur des 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 de processus sous Linux !
Prérequis
Cet article va être une présentation de la façon de gérer les processus sous Linux. Si vous voulez être pratique, vous aurez besoin des éléments suivants :
- Un hôte Linux, qui peut être une machine virtuelle ou une machine physique.
- Pour essayer les exemples PowerShell, installez PowerShell 7.1.1 sur un hôte Linux.
- Un compte utilisateur non root. Bien que l'accès root ne soit pas requis, il y aura un exemple où l'utilisateur root peut tuer le processus en cours d'exécution d'un autre utilisateur.
La distribution de Linux que vous choisissez d'utiliser dépend de vous. 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, allons-y.
Gestion des processus sous Linux
À l'occasion, vous pouvez rencontrer un scénario dans lequel 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 calendrier. Ce script bash est configuré pour s'exécuter en tant qu'autre utilisateur via un cron travail (planificateur de processus Linux).
Parfois, ce script génère des processus errants qui peuvent faire échouer le script. Comment tuer ces processus errants sans redémarrer le système ni arrêter le script ?
Dans les sections suivantes, vous passerez en revue les commandes utilisées pour localiser et terminer ou tuer processus sur un système Linux. Chaque section s'appuiera sur la précédente. Vous en apprendrez plus sur ps
, top
, pgrep
, kill
, et pkill
commandes toutes natives de Linux.
En bonus, les commandes équivalentes PowerShell Get-Process
et Stop-Process
sont inclus si les commandes natives Linux ne vous conviennent pas.
Outils de localisation des processus
Avant de tuer un processus, vous devez localiser le bon processus à cibler. Le PID unique permet un ciblage précis. Lisez la suite pour savoir comment localiser les bons processus de résiliation.
Utilisation du ps
Commande pour afficher les informations de processus
Le statut du processus ou ps
La commande 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 d'arrière-plan avec ps
.
La commande ps
affichera par défaut tous les processus pour l'identification effective de l'utilisateur (EUID) de l'utilisateur actuel. Exécution du ps
, comme indiqué ci-dessous, renverra tous les processus en cours que votre utilisateur peut terminer.
ps
Rechercher des informations de processus étendues à l'aide du top
Commande
Et si vous voulez trouver des informations constamment actualisées sur les processus en cours d'exécution et les métriques système, dans ce cas, vous pouvez utiliser le top
commande. Contrairement à ps
, le top
La commande met à jour les informations de processus à l'écran sur un intervalle défini.
Lorsque vous exécutez le top
commande, vous verrez plus qu'un simple PID. Les détails du processus incluent les pourcentages de CPU et de mémoire, les valeurs de Nice (priorité du processus de planification du CPU) , et la priorité de processus (PR) définie par le noyau Linux.
Pour un administrateur système nouveau ou expérimenté, le top
La commande est souvent le principal outil de gestion des ressources et des processus système vitaux. Comme indiqué ci-dessous, le top
la sortie de la commande affiche plus d'informations sur le processus que le ps
commande, y compris les métriques globales du système.
htop
est une variante améliorée de top
qui inclut diverses améliorations, telles qu'une sortie de terminal colorisée.
Supposons que vous souhaitiez inspecter la mémoire ou les ressources CPU qu'un processus consomme. Dans ce cas, vous pouvez utiliser le p
commutateur de top
comme indiqué ci-dessous.
top -p 2113
Peut-être avez-vous besoin d'afficher tous les processus en cours d'exécution pour un nom d'utilisateur spécifique. Le top
la commande offre le u
basculer pour afficher uniquement les processus d'un utilisateur spécifique. Comme le montre l'exemple ci-dessous, les PID correspondant uniquement à l'ID utilisateur bkindle
sont affichés.
top -u bkindle
Localisation des PID de processus spécifiques avec le pgrep
Commande
A l'origine une commande Solaris, pgrep
a été porté pour être utilisé avec Linux. Combiner la puissance de recherche du grep
commande et la gestion des processus de ps
, pgrep
offre la flexibilité de trouver le processus exact à cibler.
Bien que ps
affiche plus d'informations, pgrep
est conçu pour renvoyer uniquement le PID des processus renvoyés. pgrep
aide à localiser le processus en utilisant les nombreux paramètres de recherche disponibles . Dans l'exemple suivant, pgrep
s'affiche à la recherche de tout processus correspondant à vmtoolsd
.
pgrep vmtoolsd
De même, spécifiez un ID utilisateur avec le u
switch pour récupérer uniquement les processus associés à cet utilisateur spécifique. Comme indiqué ci-dessous, un seul PID est renvoyé pour l'utilisateur bkindle
et le vmtoolsd
processus.
pgrep -u bkindle vmtoolsd
Recherche de processus avec le Get-Process
de PowerShell sous Linux
Les commandes Linux typiques fonctionnent très bien, mais saviez-vous que PowerShell est également capable de gérer les processus Linux ? Le Get-Process
L'applet de commande fonctionne de la même manière que Linux ps
commande et renvoie des informations sur le processus. Par exemple, vous devez peut-être rechercher tous les processus en cours d'exécution par l'utilisateur actuel, bkindle
. Comme indiqué ci-dessous, recherchez tous les PID (identifiés par Get-Process
) de l'utilisateur bkindle
.
Get-Process -IncludeUserName |
Where-Object {$_.UserName -eq 'bkindle'} |
Select-Object -Property 'Id','UserName','ProcessName'
Connexe :Comment utiliser PowerShell Where-Object pour filtrer toutes les choses
Après avoir appris à localiser différents processus, lisez la suite pour découvrir toutes les façons de terminer ou de tuer un processus sous Linux !
Tuer les processus à l'aide des commandes Kill sous Linux
Dans les sections précédentes, vous avez appris à localiser le PID du processus auquel vous souhaitez envoyer un signal d'arrêt à l'aide de commandes natives Linux et PowerShell. Les sections suivantes expliquent comment utiliser le kill
et pkill
programmes, ses signaux associés et les commutateurs de ligne de commande.
Gestion des signaux et des processus Linux
Les signaux sont la méthode utilisée par Linux pour communiquer avec les processus en cours d'exécution dans le système d'exploitation. Les trois principaux signaux que le kill
la commande utilise pour terminer les processus sont :
- 1 (SIGHUP) - Termine les programmes interactifs et oblige les démons (services d'arrière-plan) à relire les fichiers de configuration utilisés par le processus.
- 9 (SIGKILL) - Force le processus à se fermer sans effectuer de tâches d'arrêt en douceur.
- 15 (SIGTERM) - Permet à un processus de se terminer normalement, comme la fermeture des fichiers ouverts une fois terminé. Il s'agit du signal par défaut utilisé lorsqu'aucun nombre n'est spécifié lors de l'utilisation de la commande kill.
Bien que cet article se concentre uniquement sur les trois principaux signaux utilisés pour tuer les processus, il y a 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 mettre fin à un processus, découvrez comment arrêter un processus dans les sections suivantes.
Utilisation du kill
Commande pour terminer un processus
Dans cet exemple suivant, vous utiliserez le kill
commande. Imaginez un instant que vous exécutez une instance PowerShell, nommée pwsh
, et le PID attribué est 22687. Une façon de mettre fin à ce processus est illustrée ci-dessous.
- Utilisez
pgrep pwsh
pour déterminer le PID du processuspwsh
, utilisé dans lekill
commande. - Utilisez
kill -s TERM 22687
pour terminer lepwsh
traiter avec grâce. LeTERM
la commande correspond au signal 15 (SIGTERM) et indiquée à l'aide dus
paramètre dukill
commande. - Utilisez votre choix de
top
,ps
, oupgrep
pour vérifier que le PID n'est plus répertorié.
Vous trouverez ci-dessous un exemple du processus ci-dessus à partir d'un terminal bash Ubuntu 20.04 LTS.
Le
killall
La commande mettra fin à tous les processus basés sur un nom au lieu de PID, ce qui peut rendre cette commande assez destructrice si elle est utilisée avec négligence. Si vous choisissez d'utiliser cette commande, utilisez lei
option pour que la commande demande une confirmation.
Tuer les processus par nom avec pkill
Vous avez peut-être remarqué que le kill
La commande ne fonctionne qu'avec les ID de processus. Cela peut faire de la fin d'un processus un processus complexe en plusieurs étapes. Le pkill
commande, incluse dans procps et procps-ng packages, termine un processus basé sur un nom recherché.
Fonctionnellement, le pkill
commande agit comme un wrapper autour du pgrep
programme. Le pkill
La commande envoie un signal spécifié à chaque processus trouvé au lieu de répertorier uniquement les PID dans le terminal. pkill
diffère de kill
dans ce pkill
ne peut utiliser que le nom d'un processus, pas le PID.
Le
pkill
La commande 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 en utilisant pkill
, procédez comme suit :
- Utilisez
ps
pour vérifier que l'application nano (un éditeur de texte en ligne de commande) est en cours d'exécution. Cette étape est facultative, mais constitue une vérification de sécurité avant de tuer un processus. - Utilisez
pkill -9 nano
pour arrêter de force l'application nano.
Vous trouverez ci-dessous un exemple du processus ci-dessus à partir d'un terminal bash Ubuntu 20.04 LTS.
Tuer un processus avec le Top
Commande
Lorsque vous exécutez le top
commande pour afficher les processus en cours d'exécution, vous pouvez tuer un processus donné avec le k frappe. Vous verrez une invite interactive demandant le PID d'un processus à tuer.
Comme indiqué ci-dessous, exécutez le top
commande et appuyez sur k. Entrez le PID que vous voulez tuer et appuyez sur Entrée touche pour terminer immédiatement le PID.
Ensuite, découvrez une autre alternative aux commandes Linux natives à l'aide de PowerShell Stop-Process
commande !
Utilisation du PowerShell Stop-Process
Commande pour terminer un processus
Si les commandes natives Linux ne sont pas votre style, PowerShell vous couvre ! Tout comme avec le kill
commande, vous pouvez mettre fin aux processus à l'aide de la Stop-Process
applet de commande sous Linux. Encore une fois, faites comme si vous exécutiez un PowerShell pwsh
processus.
- Trouvez le PID avec
Get-Process -ProcessName 'pwsh'
et notez les PID pour terminer. - Utilisez le
Stop-Process -Id 29992,30014
pour mettre fin aux multiples processus renvoyés. - Utilisez
Get-Process -ProcessName 'pwsh'
et vérifiez les PID,29992
et30014
ne sont plus répertoriés, ce qui signifie qu'ils ont été résiliés.
Vous pouvez également utiliser
Get-Process
et lekill
méthode pour terminer un ou plusieurs processus :(Get-Process -Id [PID]).Kill()
ou(Get-Process -Id [PID1,2,3,4]).Kill()
.Soyez prudent lorsque vous utilisez le
ProcessName
paramètre. L'utilisation de ce paramètre se comporte comme lekillall
commande, et va tuer tous les processus correspondant au(x) nom(s) fourni(s).
Vous trouverez ci-dessous un exemple du processus ci-dessus à partir d'un terminal bash Ubuntu 20.04 LTS.
Étapes suivantes
Vous devriez maintenant connaître les nombreuses façons de trouver et de terminer des processus sous Linux ! Pour votre prochain défi, essayez de tuer les processus à distance à l'aide de connexions SSH ou en tuant les processus qui peuvent s'exécuter dans des conteneurs.
Connexe :Un gars de Windows dans un monde Linux :Configurer SSH sous Linux