Y a-t-il une différence entre
kill -9 212121
et
kill 212121
command-line
bash
utilisateur784637
la source
la source
kill -9
Réponses:
La page de manuel Ubuntu pour
kill
expliquer le but du-9
commutateur (certes de façon plutôt saccadée):Voici ce qu'une autre page de manuel dit.
Par conséquent, l'utilisation du
-9
commutateur garantit que le processus est efficacement tué. Même si un processus figé ou ne répondant pas peut ne pas répondre à un simpleTERM
signal, il mourra dès l'envoi d'unKILL
signal.la source
La commande kill enverra un signal défini à un processus ayant une identité donnée (PID):
Bien sûr, nous ne pouvons tuer que les processus que nous possédons, alors que root peut tuer tous les processus. Voir Wikipedia pour un bon résumé des signaux informatiques.
Les signaux que vous
kill
pouvez envoyer sont listés dans la page de manuel . Le signal peut être représenté par nom ou par numéro. Si aucun signal n'est donné, le signal par défaut 15 resp.TERM
est utilisé.Les trois commandes ci-dessous sont donc identiques:
La différence entre
SIGTERM
etSIGKILL
est la manière dont une application peut agir sur le signal:TERM
: une application pourra se terminer, c'est-à-dire exécuter correctement une routine d'arrêt.KILL
: les applications sont arrêtées et immédiatement supprimées (ce qui pourrait entraîner une perte de données ou une augmentation de la capacité à signaler un crash présumé dans certains cas).la source
Notez que tous les éléments suivants sont synonymes:
Il convient de noter que dans le monde de la gestion des signaux, SIGKILL est l’un des rares systèmes uniques gérés par le système d’exploitation, et non par le programme. Lorsque vous exécutez
kill -9
, vous ne dites pas à l'application de se terminer, mais au système d'exploitation de cesser d'exécuter le programme, peu importe ce qu'il fait.Après l' envoi de SIGKILL , 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 continuer ou non jusqu'à la fin, en fonction de l'appel, mais le programme lui-même ne s'exécutera plus. Notez que les tâches tracées ou 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 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 gérer comme il le souhaite ou s'il ignore le signal, un comportement par défaut est appliqué.
Voici quelques signaux utiles que vous pourriez vous retrouver en train d'envoyer à un processus:
Indique au programme que l'utilisateur a été déconnecté (par exemple, la session SSH ou la fenêtre du terminal a été fermée).
Fait habituellement un arrêt gracieux du programme.
Envoyé lorsque vous appuyez sur CTRL+ C
signifie généralement "arrêtez ce que vous faites" - peut tuer ou ne pas tuer le programme
La valeur par défaut envoyée par
kill
etkillall
.Termine généralement le programme ... parfois après que le programme a terminé quoi que ce soit qu'il fasse.
Envoyé lorsque vous appuyez sur CTRL+ Z
Met le programme en pause, voir ci-dessus.
Indique au programme que le pipeline a été fermé. Termine généralement le programme.
Par exemple
cat /etc/passwd | head -n1
, SIGPIPE sera envoyé aucat
processus après l’impression de la première ligne, entraînant lacat
fin de celle-ci avant la fin de la totalité du fichier.Bien que tous ces signaux arrivent "naturellement" dans leur propre réglage, vous pouvez utiliser le signal pour simuler une condition permettant d'obtenir le résultat souhaité.
Par exemple, si vous souhaitez mettre fin à la session SSH de quelqu'un, vous pouvez simplement arrêter le processus, mais ce faisant, vous l'empêcherez de mettre à jour son fichier HISTORY, ce qui peut être important pour des raisons de sécurité. Mais au lieu de cela, si vous envoyez SIGHUP , le processus supposera que la connexion est morte et effectuera son nettoyage standard.
la source
SIGQUIT
, où l'action par défaut consiste à vider le noyau et à se terminer. Cela peut être utilisé si un programme fait quelque chose de très mal, vous devez l'arrêter immédiatement et vous souhaitez pouvoir le déboguer plus tard.kill -9 Signification: Le processus sera tué par le noyau; ce signal ne peut être ignoré. 9 signifie que le signal KILL n'est ni captable ni ignorable
Utilisations: SIGKILL singal
Kill Signification: La commande kill sans signal passe le signal 15 qui termine le processus normalement.
Utilisations: signal SIGTERM , qui peut être manipulé par les programmeurs
la source