Comment forcer l’arrêt des processus sur Linux à l’aide de commandes Linux

Pour expliquer la signification d’un «processus» dans les termes les plus simples, c’est qu’il s’agit d’une instance en cours d’exécution de n’importe quelle application ou programme sur votre système. Vous pouvez exécuter plusieurs applications simultanément, telles que la navigation, l’écoute de musique sur votre terminal, etc. De nombreux processus d’arrière-plan associés à ces applications sont exécutés par l’utilisateur.

Chaque application ou programme qui s’exécute sur votre système crée plusieurs processus associés à votre seule application. Parfois, cela peut être un problème et se débarrasser de ces processus est la seule option dont vous disposez.

“Tuer” un processus est une option utile que Linux vous offre pour arrêter les processus en cours, qu’il s’agisse d’un processus de premier plan ou d’un processus d’arrière-plan. Dans cet article, nous passerons en revue les commandes telles que killpkillet killallpour forcer la fermeture de tout processus sur un système.

Pourquoi tuer un processus ?

Comprendre le concept de tuer un processus est important avant d’aller plus loin dans ce didacticiel. Tuer peut sembler une façon très brutale d’exprimer le concept, mais ce que cela signifie au sens figuré, c’est d’interrompre un processus avec force.

Maintenant, pourquoi abandonner ou quitter un processus en cours ? Lorsque plusieurs processus s’exécutent en arrière-plan, tous ou quelques-uns d’entre eux peuvent mal fonctionner et entraîner un mauvais comportement de votre système. Cela retarde vos tâches en cours car le processus défectueux peut geler votre système pendant un certain temps.

Parfois, quitter tous les processus qui se comportent mal semble être la seule option pour rétablir la normalité sur votre système. Linux vous permet de tuer un processus en utilisant le pidou le nom du processus.


Utilisation de la pgrepcommande

La plupart des utilisateurs de Linux connaissent la grepcommande. La pgrepcommande peut être utilisée sur des lignes similaires du grep.

pgreplorsqu’elle est utilisée, affiche le pidprocessus en cours d’exécution tel que spécifié dans la commande. Cette commande s’avérera très utile lors de l’utilisation de la pkillcommande.

Syntaxe générale :

pgrep [options] [pattern]

Options importantes disponibles avec la pgrepcommande

OptionLa description
-ulister les identifiants de processus appartenant à un utilisateur spécifique
-ccompter le nombre de processus correspondants
-Ilister uniquement les noms de processus
-aliste le chemin complet du nom du processus

Démontrons l’utilisation de la pgrepcommande à l’aide d’un exemple.

pgrep -u gaurav gnome

Ici, nous souhaitons voir le pidsprocessus gnome qui appartient à l’utilisateur ‘gaurav’. L’option -uvous permet de lister les pidsprocessus appartenant à un utilisateur spécifique. Dans ce cas, l’utilisateur gaurav.

READ  Comment exécuter des scripts Perl en ligne de commande Linux

Production:

[email protected]:~$ pgrep -u gaurav gnome
1752
1755
1909
1922
2021
2576
4279
[email protected]:~$

Au fur et à mesure que nous avançons dans ce didacticiel, pgrepla commande nous aidera à confirmer si le processus a été tué ou est toujours en cours d’exécution.

Passons maintenant à la pkillcommande et à son exécution.


Utilisation de la pkillcommande

Vous pouvez utiliser la pkillcommande sous Linux pour tuer le processus en utilisant le nom du processus. Même si vous ne connaissez pas pidcertains processus, vous pouvez même tuer ce processus particulier à l’aide de la pkillcommande.

Les processus peuvent être spécifiés avec leur nom complet ou le nom partiel lors de l’utilisation de la pkillcommande. Même si vous entrez le nom partiel du processus, la pkillcommande correspondra à tous les processus en cours d’exécution avec le nom correspondant que vous avez entré dans la commande.

Syntaxe :

pkill [options][process_name_pattern] 

Exemple :

Affichez les processus en cours d’exécution à l’aide de la topcommande. Vous pouvez également utiliser la pscommande pour répertorier les processus.

top
top - 14:24:02 up  3:12,  1 user,  load average: 0.29, 0.48, 0.58
Tasks: 221 total,   1 running, 172 sleeping,   0 stopped,   1 zombie
%Cpu(s):  5.6 us,  1.0 sy,  0.0 ni, 92.9 id,  0.4 wa,  0.0 hi,  0.1 si,  0.0 st
KiB Mem :  3928240 total,   610456 free,  2233152 used,  1084632 buff/cache
KiB Swap:  4083708 total,  3378884 free,   704824 used.  1187268 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                           
 4077 gaurav   20   0 3312128 673480 118360 S  19.6 17.1  15:13.23 Web Content                                                                       
 3712 gaurav   20   0 3953008 453544 116476 S   4.0 11.5   9:28.39 MainThread                                                                        
 2010 gaurav   20   0 4084232 111096  45024 S   1.7  2.8   3:14.85 gnome-shell                                                                       
 1197 root      20   0 1039612  33704  22988 S   1.0  0.9   3:04.42 Xorg                                                                              
 1426 couchdb   20   0 3772396  16908   2520 S   0.7  0.4   1:50.83 beam.smp                                                                          
 3288 gaurav   20   0  722480  25048  18272 S   0.7  0.6   0:06.84 gnome-terminal-                                                                   
 3915 gaurav   20   0 2804900 231524 111228 S   0.7  5.9   0:54.42 Web Content                                                                       
 4146 gaurav   20   0 3017924 245304 120604 S   0.7  6.2   2:01.21 Web Content                                                                       
 4417 gaurav   20   0 2964208 234396 119160 S   0.7  6.0   0:59.90 Web Content                                                                       
 4860 gaurav   20   0 3066800 372920 132544 S   0.7  9.5   0:48.20 Web Content                                                                       
16007 gaurav   20   0   41944   3780   3116 R   0.7  0.1   0:00.28 top            

L’utilisation topde la commande affichera plusieurs processus sur votre terminal. Essayons d’afficher le processus avec un nom particulier. Nous utiliserons la grepcommande pour afficher un processus dont le nom correspond à la chaîne ‘mongo’.

top | grep -i mongo

Remarque : Ici, j’ai utilisé l’option -i pour rendre la recherche insensible à la casse.

READ  Linux Mint Debian Edition 5: Perfection avec stabilité

La sortie de cette commande affichera les processus correspondant au nom ‘mongo’

 1158 mongodb   20   0  288564   4848   1320 S   0.7  0.1   1:03.22 mongod      
 1158 mongodb   20   0  288564   4848   1320 S   1.0  0.1   1:03.25 mongod      
 1158 mongodb   20   0  288564   4848   1320 S   0.7  0.1   1:03.27 mongod      
 1158 mongodb   20   0  288564   4848   1320 S   0.7  0.1   1:03.29 mongod      
 1158 mongodb   20   0  288564   4848   1320 S   0.7  0.1   1:03.31 mongod      
 1158 mongodb   20   0  288564   4848   1320 S   0.7  0.1   1:03.33 mongod      
 1158 mongodb   20   0  288564   4848   1320 S   1.0  0.1   1:03.36 mongod      
 1158 mongodb   20   0  288564   4848   1320 S   0.7  0.1   1:03.38 mongod      
 1158 mongodb   20   0  288564   4848   1320 S   0.7  0.1   1:03.40 mongod      
 1158 mongodb   20   0  288564   4848   1320 S   1.0  0.1   1:03.43 mongod      
 1158 mongodb   20   0  288564   4848   1320 S   0.7  0.1   1:03.45 mongod      
 1158 mongodb   20   0  288564   4848   1320 S   1.0  0.1   1:03.48 mongod      
 1158 mongodb   20   0  288564   4848   1320 S   0.3  0.1   1:03.49 mongod      
 1158 mongodb   20   0  288564   4848   1320 S   1.0  0.1   1:03.52 mongod      
 1158 mongodb   20   0  288564   4848   1320 S   0.7  0.1   1:03.54 mongod      
 1158 mongodb   20   0  288564   4848   1320 S   1.0  0.1   1:03.57 mongod

Maintenant, nous allons utiliser la pkillcommande pour tuer le processus nommé ‘mongo’.

pkill mongo

Cette commande va maintenant tuer le processus mongo. Nous pouvons confirmer si le processus a été forcé à quitter en utilisant la pgrepcommande qui affiche le pidprocessus en cours d’exécution selon les critères spécifiés par l’utilisateur.

[email protected]:~$ pgrep mongo
[email protected]:~$

Cette commande ne renverra aucune valeur. Cela confirme que le processus ‘mongo’ est maintenant tué à l’aide de la pkillcommande.


Options fréquemment utilisées avec la pkillcommande

Lors de l’utilisation de la pkillcommande, nous aurons besoin des options mentionnées pour une utilisation correcte et sans effort de la pkillcommande.

READ  Comment diviser l'espace de travail Vim verticalement ou horizontalement
ChoixLa description
-ffaire correspondre les arguments complets, y compris les espaces, les guillemets, les caractères spéciaux
-upour informer le processus pkill de correspondre au processus exécuté par l’utilisateur spécifié
-1recharge le processus
-9tue le processus
-15abandonne gracieusement un processus

Voyons un autre exemple de pkillcommande utilisant l’ -foption.

Il y a deux commandes en cours d’exécution sur le terminal, comme indiqué ci-dessous.

ping bbc.com

ping youtube.com

Les deux processus sont lancés par la pingcommande. Maintenant, supposons que nous souhaitions mettre fin à un seul processus “ping youtube.com”, nous devons utiliser l’ -foption avec la pkillcommande qui tue un processus avec un nom spécifique, y compris les espaces et les guillemets du nom du processus.

Commande :

[email protected]:~$ pkill -f "ping youtube.com"
[email protected]:~$ 

Résultat:

[email protected]:~$ ping youtube.com
PING youtube.com (142.250.67.206) 56(84) bytes of data.
64 bytes from bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=1 ttl=117 time=30.9 ms
64 bytes from bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=2 ttl=117 time=121 ms
64 bytes from bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=206 ttl=117 time=86.5 ms
64 bytes from bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=207 ttl=117 time=105 ms
Terminated
[email protected]:~$

Ici, le ping youtube.comprocessus ” ” est maintenant tué et le ” ping bbc.com” est toujours en cours d’exécution sur le terminal.

Au cas où, si nous avions utilisé la pkill pingcommande, cela aurait tué les deux pingprocessus, ce qui n’est pas souhaitable.


Signaux utilisés avec pkillla commande

pkillforce un processus à quitter en envoyant un signal spécifique à ce processus. Il existe trois signaux possibles que pkillla commande pourrait envoyer au processus en fonction de la commande donnée par l’utilisateur.

Voici la liste des signaux disponibles.

Signalspécification
1(HUP)recharge le processus spécifié
9 (KILL)tue le processus spécifié
15 (TERM)arrête ou abandonne doucement le processus spécifié

Pour ce didacticiel, nous nous appuierons fortement sur le KILLsignal. Passons en revue quelques exemples pour mieux le comprendre.

Utilisation de la pgrepcommande pour obtenir la pidcorrespondance avec le nom apache.

[email protected]:~$ pgrep apache
1218
10402
10403
[email protected]:~$
pkill -KIll apache

OU vous pouvez également utiliser la commande avec des chiffres (par exemple 1, 9, 15)

pkill -9 apache

Les deux commandes ci-dessus tueront le processus apache. Confirmer à pgrepnouveau avec la commande.

[email protected]:~$ pgrep apache
[email protected]:~$

Comme la pgrepcommande ne renvoie aucune sortie, cela prouve que le processus apache a été tué.


Conclusion

Dans ce didacticiel, nous avons découvert la pkillcommande et comment elle est utilisée pour tuer le processus en utilisant directement le nom du processus. Nous avons également découvert la pgrepcommande utilisée pour récupérer l’ID de processus du processus exécuté par un utilisateur spécifique. La pgrepcommande nous permet de vérifier si le processus est tué.

5/5 - (1 vote)
SAKHRI Mohamed
SAKHRI Mohamed

Le blog d'un passionné d'informatique qui partage des actualités, des tutoriels, des astuces, des outils en ligne et des logiciels pour Windows, macOS, Linux, Web designer et jeux vidéo.

Publications: 3764

Laisser un commentaire

Your email address will not be published.