Maison  >  Article  >  Opération et maintenance  >  Comment tuer un processus sous Linux

Comment tuer un processus sous Linux

WBOY
WBOYavant
2023-05-21 19:28:101353parcourir

Article conventionnel : , Tout d'abord, utilisez PS pour visualiser le processus, la méthode est la suivante :


Copiez le code comme suit :

$ ps -ef

$ ps -ef

...

SMX 1822 1 0 11:38? 00 :00:49 gnome-terminal
smx 1823 1822 0 11:38 ? ash
smx 1827 1 4 11 : 38 ? 00:26:28 /usr/lib/firefox-3.6.18/firefox-bin
smx 1857 1822 0 11:38 pts/1 00:00:00 bash
smx 1880 1619 0 11:38 ? 00:00 ;

smx 1822 0,1 0,8 58484 18152 ? ty-helper
smx 1824 0.0 0.1 6820 3776 pts/0 ss 11:38 0:02 bash
smx 1827 4.3 5.8 398196 119568 sl 11:38 26:13 /usr/lib/firefox-3.6.18/firefox-bin
smx 1857 0,0 0,1 6688 3644 pts/1 ss 11:38 0:00 bash

smx 1880 0.0 0.6 41536 12620 ? 0 r+ 21:42 0 : 00 ps -aux


à ce moment Si je veux tuer le processus Firefox, je tape juste dans le terminal :

Copiez le code Le code est le suivant :

$ kill -s 9 1827


où -s 9 précise que le signal transmis au processus est 9, c'est-à-dire forcé, dès que possible Terminez le processus. Voir l'annexe pour chaque signal de terminaison et ses fonctions.

1827 est le pid de Firefox trouvé par ps ci-dessus.

C'est simple, mais il y a un problème. S'il y a moins de processus, ce n'est pas grave. S'il y a trop de processus, ce sera douloureux, que ce soit ps -ef ou ps -aux, à chaque fois. pour trouver le processus à tuer dans une grande liste d'informations sur le processus, les progrès sont vertigineux.

Avancé :

Amélioration 1 :


Placez les résultats de la requête ps dans le pipeline vers grep pour trouver les processus contenant des chaînes spécifiques. Le caractère barre verticale "|" est utilisé pour séparer deux commandes. La sortie de la commande sur le côté gauche du caractère barre verticale sera utilisée comme entrée de la commande sur le côté droit du caractère barre verticale.

Copier le code Le code est le suivant :


$ ps -ef | grep firefox

smx 1827 1 4 11:38 00:27:33 /usr/lib/firefox-3.6.18/firefox-bin

smx 12029 1824 0 21:54 pts/0 00:00:00 grep --color=auto firefox

C'est rafraîchissant cette fois. Ensuite

Copiez le code Le code est le suivant :

$kill -s 9 1827

Amélioration 2 - Utiliser pgrep :

À quoi pensez-vous en premier lorsque vous voyez pgrep ? C'est vrai, grep ! Le p de pgrep indique que cette commande est grep spécifiquement pour les requêtes de processus.

Copier le code Le code est le suivant :

$ pgrep firefox
1827


Que voyez-vous ? C'est vrai, le pid de Firefox, il faut le retaper :

$kill -s 9 1827

Amélioration 3 - Utiliser pidof :

A quoi penses-tu quand tu vois pidof ? C'est vrai, pid of xx, traduit littéralement par le pid de xx.


Copier le code Le code est le suivant :

$ pidof firefox-bin

1827



Le léger inconvénient par rapport à pgrep est que pidof doit donner le nom complet du processus. Ensuite, il y a le cliché :

Copiez le code Le code est le suivant :

$kill -s 9 1827

Que vous utilisiez ps puis trouvez lentement le processus pid, ou que vous utilisiez grep pour trouver le processus contenant le chaîne correspondante, ou utilisez pgrep pour trouver directement le processus contenant Il est un peu gênant de saisir le pid de processus de la chaîne correspondante, puis de le saisir manuellement pour tuer pour tuer. Existe-t-il un moyen plus pratique ? avoir!

Amélioration 4 :

Copier le code Le code est le suivant :

$ps -ef | grep -v grep | cut -c 9-15 |

La sortie de "grep firefox" correspond à tous les processus contenant le mot-clé "firefox".

"grep -v grep" consiste à supprimer le processus contenant le mot-clé "grep" des processus répertoriés.

"cut -c 9-15" intercepte les 9ème au 15ème caractères de la ligne d'entrée, qui se trouve être le numéro de processus pid.

La commande xargs dans "xargs kill -s 9" est utilisée pour utiliser le résultat de sortie (pid) de la commande précédente comme paramètre de la commande "kill -s 9" et exécuter la commande. "kill -s 9" tuera de force le processus spécifié.

Tu ne veux pas te plaindre de quelque chose ? Oui, c'est trop long

Amélioration 5 :

Vous connaissez les commandes pgrep et pidof, pourquoi avez-vous besoin de taper une liste si longue !

Copier le code Le code est le suivant :

$ pgrep firefox |

La fonction de awk '{print $2}' est d'imprimer le contenu de la deuxième colonne. D'après l'article général, vous pouvez savoir que la deuxième colonne sortie par ps est exactement pid. Passez le pid correspondant du processus à tuer en tant que paramètre via xargs et tuez le processus correspondant.


Amélioration 7 :

Dois-je appeler xargs à chaque fois pour passer le pid pour tuer ? La réponse est non :


Copiez le code Le code est le suivant :

$kill -s 9 `ps -aux grep firefox | la commande est encore un peu longue, remplacée par pgrep.

Copier le code Le code est le suivant :

$kill -s 9 `pgrep firefox`


Amélioration 9 - pkill :

À quoi as-tu pensé quand tu as vu pkill ? C'est vrai, pgrep et kill ! pkill=pgrep+kill.


Copier le code Le code est le suivant :

$pkill -9 firefox


Explication : "-9" signifie que le signal envoyé est 9. La différence entre pkill et kill sur ce point est : pkill n'a pas besoin "s" pour terminer le niveau du signal Suivre directement après "-". J'ai toujours pensé que c'était "-s 9" auparavant, mais le processus ne parvenait pas à se terminer à chaque fois que je l'exécutais.

Amélioration 10 - killall :

killall est similaire à pkill, mais si le nom du processus donné est incomplet, killall signalera une erreur. pkill ou pgrep peuvent terminer un processus simplement en donnant une partie du nom du processus.

Copiez le code Le code est le suivant :

$killall -9 firefox

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer