Y a-t-il une différence entre
kill -9 212121
et
kill 212121
Y a-t-il une différence entre
kill -9 212121
et
kill 212121
Le site tuer enverra un message défini signal à un processus avec une identité donnée (PID) :
kill -<signal> <pid>
Bien sûr, nous ne pouvons tuer que les processus qui nous appartiennent, alors que root peut tuer tous les processus. Voir Wikipedia pour un bon résumé des signaux informatiques.
Signaux kill
peuvent envoyer sont énumérés dans le page d'accueil . Le signal peut être représenté par un nom ou par un numéro. Si aucun signal n'est donné, le signal par défaut est 15 resp. TERM
est utilisé.
Les trois commandes ci-dessous sont donc identiques :
kill -9 1234
kill -KILL 1234
kill -SIGKILL 1234
La différence entre SIGTERM
et SIGKILL
est la façon dont une application peut agir sur le signal :
TERM
: une application sera capable de se terminer, c'est-à-dire d'exécuter correctement une routine d'arrêt.KILL
: les applications sont arrêtées et tuées immédiatement (ce qui pourrait entraîner une perte de données ou déclencher un appel pour signaler un crash présumé dans certains cas).La page de manuel Ubuntu pour kill
explique l'objectif de la -9
(il est vrai de manière assez hachée) :
Name Num Action Description
KILL 9 exit cannot be blocked
Voici ce que une autre page de manuel dit.
La commande
kill
envoie le signal spécifié au processus ou au groupe de processus spécifié. Si aucun signal n'est spécifié, la commandeTERM
est envoyé. Le siteTERM
tuera les processus qui ne reçoivent pas ce signal. Pour les autres processus, il peut être nécessaire d'utiliser la fonctionKILL
(9
), puisque ce signal ne peut pas être attrapé.
Par conséquent, en utilisant le -9
permet de s'assurer que le processus est effectivement tué. Même si un processus gelé ou ne répondant pas peut ne pas répondre à un simple bouton TERM
il mourra lorsqu'il recevra un signal KILL
signal.
Notez que tous les termes suivants sont synonymes :
kill -9 1234
kill -KILL 1234
kill -SIGKILL 1234
Il est utile de souligner que dans le monde du traitement des signaux, SIGKILL est l'une des rares à être gérée par l'unité de gestion de l'environnement. système d'exploitation pas le programme. Lorsque vous exécutez kill -9
En effet, vous ne demandez pas à l'application de se terminer elle-même, mais vous demandez au système d'exploitation d'arrêter d'exécuter le programme, quoi qu'il fasse.
Après SIGKILL est envoyé, le programme sera immédiatement arrêté. Si des appels du noyau sont en cours d'exécution (par exemple File IO) au nom du programme, ces appels peuvent ou non continuer jusqu'à leur fin, selon l'appel, mais le programme lui-même ne s'exécutera plus. Notez que tracé ou les tâches exécutées sous un débogueur peuvent se comporter différemment ici.
L'autre signal qui ne peut pas être bloqué est SIGSTOP qui a un effet similaire, mais au lieu de gèle le programme ; vous pouvez envoyer SIGCONT plus tard pour le reprendre. Ce comportement est entièrement contrôlé par le système d'exploitation, et le programme ne reçoit aucune notification préalable.
Tous les autres signaux sont envoyés au programme ; il peut les traiter comme il l'entend, ou s'il ignore le signal, un comportement par défaut est suivi.
Voici quelques signaux utiles que vous pouvez être amené à envoyer à un processus :
kill
et killall
.cat /etc/passwd | head -n1
enverra SIGPIPE au cat
après l'impression de la première ligne, ce qui provoque cat
pour terminer avant de terminer le fichier entier.Bien que tous ces signaux se produisent "naturellement" dans leur propre cadre, vous pouvez utiliser le signal pour simuler une condition afin d'obtenir le résultat souhaité.
Par exemple, si vous voulez mettre fin à la session SSH de quelqu'un, vous pouvez simplement tuer le processus, mais en faisant cela, vous l'empêcherez de mettre à jour son fichier HISTORY, ce qui peut être important pour des raisons de sécurité. Mais à la place, si vous lui envoyez SIGHUP alors le processus supposera que la connexion est morte et effectuera son nettoyage standard.
tuer -9 Signification : Le processus sera tué par le noyau ; ce signal ne peut être ignoré. 9 signifie un signal KILL qui n'est pas capturable ou ignorable.
Utilisations : SIGKILL singal
Tuer Signification : La commande kill sans aucun signal passe le signal 15, qui termine le processus de façon normale.
Utilisations : SIGTERM signal, qui peut être géré par les programmeurs
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.