GNU/Linux >> Tutoriels Linux >  >> Linux

Quelle est la différence entre pkill et killall ?

Le pgrep et pkill Les utilitaires ont été introduits dans Solaris 7 de Sun et, comme l'a noté g33klord, ils prennent un modèle comme argument qui est mis en correspondance avec les noms des processus en cours d'exécution. Alors que pgrep imprime simplement une liste de processus correspondants, pkill enverra le signal spécifié (ou SIGTERM par défaut) aux processus. Les options communes et la sémantique entre pgrep et pkill est pratique lorsque vous voulez être prudent et examiner d'abord les processus de correspondance de liste avec pgrep , puis continuez à les tuer avec pkill . pgrep et pkill sont fournis par le package procps, qui fournit également d'autres /proc utilitaires de système de fichiers, tels que ps , top , free , uptime entre autres.

Le killall La commande est fournie par le package psmisc et diffère de pkill en ce que, par défaut, il correspond exactement au nom de l'argument (jusqu'aux 15 premiers caractères) lors de la détermination des processus auxquels les signaux seront envoyés. Le -e , --exact L'option peut être spécifiée pour exiger également des correspondances exactes pour les noms de plus de 15 caractères. Cela fait killall un peu plus sûr à utiliser par rapport à pkill . Si l'argument spécifié contient une barre oblique (/ ), l'argument est interprété comme un nom de fichier et les processus exécutant ce fichier particulier seront sélectionnés comme destinataires du signal. killall prend également en charge la correspondance des expressions régulières des noms de processus, via le -r , --regexp option.

Il y a aussi d'autres différences. Le killall La commande par exemple a des options pour faire correspondre les processus par âge (-o , --older-than et -y , --younger-than ), tandis que pkill peut être dit de ne tuer que les processus sur un terminal spécifique (via le -t option). Il est donc clair que les deux commandes ont des niches spécifiques.

Notez que le killall commande sur les systèmes descendant d'Unix System V (notamment Solaris de Sun, AIX d'IBM et HP-UX de HP) tue tous processus tuables par un utilisateur particulier, arrêtant efficacement le système s'il est exécuté par root.

Les utilitaires Linux psmisc ont été portés sur BSD (et en extension Mac OS X), d'où killall suit la sémantique "tuer les processus par nom".


pkill est celui qui vaut la peine d'être enseigné aux générations futures, à la fois en raison des filtres que vous mentionnez et du fait qu'il est associé au hautement réutilisable pgrep . Ils tuent les processus de la même manière, et aucun ne tue de manière récursive - mais avec pgrep , vous pouvez sélectionner par session (par tty, pensez setsid) ou par groupe de processus (pensez au contrôle des tâches).


une différence est que killall prendre le nom exact du processus comme argument alors que pkill peut prendre un nom partiel ou complet.

Vous pouvez vous référer à cette question pour en savoir plus sur pkill


Linux
  1. Quelle est la différence entre Git Switch et Checkout ?

  2. Quelle est la différence entre fsck et e2fsck ?

  3. Quelle est la différence entre adduser et useradd ?

  4. Quelle est la différence entre `su -` et `su --login` ?

  5. Quelle est la différence entre unlink et rm ?

Quelle est la différence entre Linux et Unix ?

Quelle est la différence entre la connexion et le shell sans connexion

Quelle est la différence entre la commande apt et apt-get ?

Qu'est-ce qu'un Hyperviseur ? Quelle est la différence entre les types 1 et 2 ?

Quelle est la différence entre curl et Wget ?

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