Je connais la kill
commande, et la plupart du temps nous utilisons simplement kill -9 pour tuer un processus avec force, il y a beaucoup d'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.
Faire pkill
et killall
utiliser la kill
commande dans leur implémentation? Je veux dire qu'ils ne sont que des wrappers kill
ou qu'ils ont leur propre implémentation?
Je voudrais également savoir comment la pgrep
commande obtient l'ID de processus à partir du nom de 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, laquelle est la plus rapide?
linux
bash
shell-script
kill
Ijaz Ahmad Khan
la source
la source
kill -9
par défaut? -15 (s'il vous plaît arrêter) et -1 (le modem a raccroché, veuillez vous fermer proprement) sont beaucoup plus polis. Deuxièmement. Méfiez-vous de l'utilisation de killall sur les boîtiers non linux. Il pourrait se comporter différemment. (Par exemple, sur Solaris, il tue tout. NON FILTRÉ sur les noms de processus).Réponses:
La
kill
commande est un wrapper très simple pour l'kill
appel système , qui ne connaît que les ID de processus (PID).pkill
etkillall
sont également des wrappers pour l'kill
appel système (en fait, pour la bibliothèque libc qui appelle directement l'appel système), mais peuvent déterminer les PID pour vous, en fonction de choses comme le nom du processus, le propriétaire du processus, l'ID de session, etc.Comment
pkill
etkillall
travail peuvent être vus en utilisantltrace
oustrace
sur eux. Sous Linux, ils lisent tous les deux le/proc
système de fichiers et, pour chaque pid (répertoire) trouvé, parcourent 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, propre au noyau et au système. En général, ils lisent/proc/<PID>/stat
ce qui contient le nom de la commande comme 2ème champ. Pourpkill -f
etpgrep
examinez l'/cmdline
entrée pour chaque entrée de proc de PID.pkill
etpgrep
utiliser l'readproc
appel système, alorskillall
que non. Je ne pourrais pas dire s'il y a une différence de performances: vous devrez le comparer vous-même.la source
kill et killall sont des outils qui permettent de tuer un processus. Le premier par son PID, le second par son nom. pgrep (liste) et pkill (kill par défaut) sont des outils qui permettent d'envoyer un message à un processus par son nom ou d'autres attributs voir: http://linux.die.net/man/1/pkill Pour plus d'informations sur signaux: http://linux.die.net/man/7/signal
la source
killall
est utilisé pour tuer un processus par son nom? et il utilise pgrep à cet effet? etkillall
tue également tous les processus enfants,? quel signalkillall
utilise par défaut?killall
seront tués , de sorte que si vous êtes root, vous redémarrez efficacement le serveur.killall chromium
tuera le processus de chrome,pgrep chromium
vous donnera la liste PID,pkill chromium
tuera le chrome. killall enverra par défaut le signal SIGTERM (comme pkill)