Après avoir utilisé tout simplement kill <some_pid>
sur les systèmes Unix depuis de nombreuses années, j'ai appris pkill
d'un Linux-savvy jeune collègue collègue 1 .
J'ai vite accepté le Linux-way, pgrep
-ment et pkill
-ment à travers de nombreux jours et nuits, grâce à des ralentissements et des conditions de course. C'était très bien.
Mais maintenant je ne vois rien mais killall
. Les tutoriels semblent seulement mentionner killall
, et je ne suis pas sûr qu'il s'agisse d'un développement parallèle, d' killall
un successeur pkill
ou de quelque chose d'autre.
Cela semble fonctionner de manière plus ciblée pkill
, mais je suis sûr qu'il me manque quelque chose.
Est-ce qu'une personne au courant de Ubuntu / Debian 2 peut expliquer quand (ou pourquoi) killall
devrait être utilisée, surtout si elle devrait être utilisée de préférence à pkill
(quand pkill
cela semble souvent plus facile, parce que je peux être plus bâclé avec la correspondance de noms, au moins par défaut).
En parlant de killall
, je ne pense pas à la commande qui, sur certains systèmes Unix (Solaris, AIX,?) Tuerait tous les processus utilisateur. Voici une description de cette version, issue d' une page de manuel pour AIX d'IBM :
La commande killall annule tous les processus que vous avez démarrés, à l'exception de ceux produisant le processus killall. Cette commande constitue un moyen pratique d’annuler tous les processus créés par le shell que vous contrôlez. Lorsqu'elle est démarrée par un utilisateur root, la commande killall annule tous les processus annulables, à l'exception de ceux qui l'ont démarrée. Si plusieurs signaux sont spécifiés, seul le dernier est effectif.
1 "collègue" est une mise à jour gratuite de "collègue", vous pourriez en faire autant.
2 À l’origine, j’imaginais que c’était une chose sous Linux ou Debian, mais certaines sources disent que Linux killall
est dérivé de Unix à la saveur de BSD.
la source
killall
(vieux?) Système Solaris, mais il se comportait différemment. Ça a tout tué.killall is safer for users to blindly copy and paste
, sauf si vous êtes sur une machine où killall tue vraiment tout. Il est regrettable que les deux services publics portent le même nom.S'il vous plaît soyez prudent avec "killall". Killall tue tous les processus sur certains systèmes (j'oublie lequel) . Il ignorera les arguments en silence et mettra votre système à l'arrêt complet.
la source
kill -9 -1
pourrait tuer votre système, etkillall -9 -1
pourrait aussi bien. Mais pas seulementkillall [program]
si vous activez / etc / bash_completion, after
killall <part_of_process_name>
et hit tab - complète automatiquement le nom du processus à partir de la liste des processus en cours d'exécutionla source
pkill plug<tab>
de tuer le plugin flash pour firefox quand je sais que je n'ai plus rien à utiliser pendant un moment, mais que je veux quand même utiliser activement firefox. C'est une fonction du shell, pas une différence entre killall et pgrep / pkill.Si vous regardez les options des deux programmes, vous verrez qu'ils font tous les deux à peu près la même chose, mais de manière différente.
pkill effectuera une correspondance sur divers attributs d'un processus (CMD, PID, PPID, UID, etc.) et enverra le signal donné à chaque processus correspondant. (Pour CMD, une expression régulière est utilisée, pour d'autres c'est une chaîne). pkill n'est pas interactif, mais convient mieux aux programmes batch.
killall effectuera une correspondance sur le nom du processus (comm) ou l'utilisateur (utilisateur), et non sur la chaîne de commande complète. L'argument est utilisé comme une simple chaîne et doit correspondre à la valeur entière de la "comm" (il existe également une option --regexp pour changer cela). killall a les options --interactive et --younger-than, que pkill ne possède pas.
Il y a aussi un killall5 qui date de SysV et qui a été porté vers d'autres variantes UNIX (supposément dans le paquet Ubuntu 'sysutils'). Cela se comporte différemment à l'ancienne. Cela était souvent utilisé en interne dans les scripts d'initialisation pour arrêter ou passer en mode mono-utilisateur.
la source
pkill
nekillall
devrait être utilisé dans les scripts, uniquement de manière interactive et avec prudence.