GNU/Linux >> Tutoriels Linux >  >> Linux

La différence entre Kill, Pkill et Killall ?

Je connais kill command , et la plupart du temps nous utilisons simplement kill -9 pour tuer un processus avec force, il existe de nombreux autres signaux qui peuvent être utilisés avec kill . Mais je me demande quels sont les cas d'utilisation de pkill et killall , s'il existe déjà une commande kill.

Faites pkill et killall utilisez le kill commande dans leur mise en œuvre ? Je veux dire qu'ils ne sont que des emballages sur kill ou ont-ils leur propre implémentation ?

J'aimerais aussi savoir comment pgrep commande obtient l'identifiant du processus à partir du nom du processus.

Toutes ces commandes utilisent-elles les mêmes appels système sous-jacents ? Y a-t-il une différence du point de vue des performances, lequel est le plus rapide ?

Réponse acceptée :

Le kill La commande est un wrapper très simple pour le kill appel système , qui ne connaît que les ID de processus (PID). pkill et killall sont également des enveloppes pour le kill appel système , (en fait, à la bibliothèque libc qui invoque directement l'appel système), mais peut déterminer les PID pour vous, en fonction de choses comme le nom du processus, le propriétaire du processus, l'identifiant de session, etc.

Comment pkill et killall le travail peut être vu en utilisant ltrace ou strace sur eux. Sous Linux, ils lisent tous les deux le /proc système de fichiers, et pour chaque pid (répertoire) trouvé, parcourt le chemin de manière à identifier un processus par son nom ou d'autres attributs. La façon dont cela est fait est techniquement parlant, spécifique au noyau et au système. En général, ils lisent depuis /proc/<PID>/stat qui contient le nom de la commande comme 2e champ. Pour pkill -f et pgrep examinez le /cmdline entrée pour chaque entrée de proc de PID.

pkill et pgrep utilisez le readproc appel système, alors que killall ne fait pas. Je ne saurais dire s'il y a une différence de performances :vous devrez l'évaluer vous-même.


Linux
  1. Quelle est la différence entre Sudo Su - et Sudo Su - ?

  2. La différence entre Getty et Agetty ?

  3. La différence entre "env" et "printenv" ?

  4. La différence entre fork(), vfork(), exec() et clone()

  5. Quelle est la différence entre pkill et killall ?

Quelle est la différence entre Linux et Unix ?

Quelle est la différence entre les commandes kill et killall ?

4 façons de tuer un processus - kill, killall, pkill, xkill

Comment tuer les processus sous Linux en utilisant kill, killall et pkill

Quelle est la différence entre le noyau préemptif non préemptif, préemptif et préemptif sélectif ?

Quelle est la différence entre unlink et rm ?