Je comprends que c'est hors sujet, je ne pouvais trouver nulle part en ligne et je pensais que les gourous de la programmation dans la communauté pourraient le savoir.
J'utilise habituellement
kill -9 pid
tuer le travail. Je me suis toujours demandé l’origine de 9. Je l’ai consultée en ligne, et il est écrit:
"9 Signifie que le signal KILL n'est ni capturable ni ignorable. En d'autres termes, il signalerait au processus (une application en cours d'exécution) de quitter immédiatement" (source: http://wiki.answers.com/Q/What_does_kill_-9_do_in_unix_in_its_entirety )
Mais pourquoi 9? et qu'en est-il des autres chiffres? y a-t-il une signification historique ou en raison de l'architecture d'Unix?
Voir article de Wikipédia sur les signaux Unix pour la liste des autres signaux. SIGKILL vient d’avoir le 9.
Vous pouvez aussi bien utiliser les mnémoniques que les chiffres:
kill -SIGKILL pid
Il y avait 8 autres signaux, ils sont venus avec le premier.
Je pense qu'une meilleure réponse ici est simplement ceci:
mike@sleepycat:~☺ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
Quant à la "signification" de 9 ... je dirais qu'il n'y en a probablement pas. Selon interface de programmation Linux (p. 388) :
Chaque signal est défini comme un unique (petit) entier, commençant séquentiellement à partir de 1. Ces entiers sont définis avec des noms symboliques de la forme SIGxxxx. Puisque les nombres réels utilisés pour chaque signal varient d'une implémentation à l'autre , ce sont ces noms symboliques qui sont toujours utilisés dans les programmes.
Vous devez d’abord savoir ce que sont les signaux dans les systèmes de type Unix (cela ne prendra que quelques minutes).
Signals, sont des interruptions logicielles envoyées à un programme (en cours d'exécution) pour indiquer qu'un événement important s'est produit.
Les événements peuvent varier des demandes des utilisateurs aux erreurs d'accès illégal à la mémoire. Certains signaux, tels que le signal d'interruption, indiquent qu'un utilisateur a demandé au programme de faire quelque chose qui n'est pas dans le flux de contrôle habituel.
Il existe plusieurs types de signaux que nous pouvons utiliser - pour obtenir la liste complète de tous les signaux disponibles/possibles, utilisez la commande " $ kill -l":
Dans la sortie ci-dessus, il est clairement visible que chaque signal a un ' numéro du signal' (par exemple 1, 2, 3) et un ' nom du signal' ( SIGUP, SIGINT, SIGQUIT) qui lui sont associés. Pour un aperçu détaillé de chaque signal, visitez ceci lien .
Enfin, pour en venir à la question "Pourquoi le numéro 9 dans kill -9 commande":
Il existe plusieurs méthodes pour transmettre des signaux à un programme ou à un script. Une des méthodes couramment utilisées pour envoyer le signal consiste à utiliser la commande kill - la syntaxe de base est la suivante:
$ kill -signal pid
Où signal est soit le numéro ou nom du signal, suivi du processus Id (pid) auquel le signal sera envoyé.
Par exemple - SIGKILL (ou 9), signal tue le processus immédiatement.
$ kill -SIGKILL 1001
et
$ kill -9 1001
les deux commandes sont une seule et même chose, c'est-à-dire que nous avons utilisé ci-dessus le "nom du signal" et, plus tard, le "numéro du signal".
Verdict: On a le choix librement d'utiliser le "nom du signal" ou le "numéro du signal" avec la commande kill.
C'est une référence à "Revoulution 9" par les Beatles. Une collection de clips sonores et de bruits trouvés, cet enregistrement met en vedette John Lennon répétant sans cesse "Number 9, Number 9 ...". être en train de dire "Allume-moi, homme mort ..."
Par conséquent, le neuvième signal était destiné à être le signal le plus meurtrier.
Il existe une très longue liste de signaux Unix que vous pouvez visualiser sur Wikipedia . De manière quelque peu déroutante, vous pouvez réellement utiliser kill
pour envoyer un signal à un processus. Par exemple, kill -SIGSTOP 12345
force le processus 12345 à suspendre son exécution, tandis que kill -SIGCONT 12345
lui dit de reprendre. Une version un peu moins cryptée de kill -9
est kill -SIGKILL
.
SIGKILL
utilise pour tuer le processus. SIGKILL
ne peut être ni ignoré ni traité. Sous Linux, Façons de donner SIGKILL
.
kill -9 <process_pid>
kill -SIGKILL <process_pid>
killall -SIGKILL <process_name>
killall -9 <process_name>
pourquoi kill -9: le nombre 9 dans la liste des signaux a été choisi pour être SIGKILL en référence à "tuer les 9 vies d'un chat".
il existe des processus qui ne peuvent pas être tués comme ceci "tuent% 1". si nous devons mettre fin à ce processus, une commande spéciale est utilisée pour tuer ce processus qui est kill -9. Par exemple, ouvrez vim et arrêtez-vous si vous utilisez ctrl + z, puis consultez les travaux et après avoir appliqué le processus kill, ce processus ne sera pas terminé. Nous utilisons ici la commande kill -9 pour mettre fin au processus.
Le -9
est le numéro de signal et spécifie que le message de neutralisation envoyé doit être du type KILL (non capturable, non ignorable).
kill -9 pid
Qui est le même que ci-dessous.
kill -SIGKILL pid
Sans spécifier un numéro de signal, la valeur par défaut est -15, qui est TERM (signal de fin du logiciel). Taper kill <pid>
est le même que kill -15 <pid>
.
Les deux sont identiques à kill -sigkill processID, kill -9 processID. Son essentiellement pour la résiliation forcée du processus.
Tapez la commande kill -l sur votre shell
vous constaterez qu’au 9ème numéro [9) SIGKILL], on peut donc utiliser kill -9 ou kill -SIGKILL
SIGKILL est sûr de tuer le signal, il ne peut pas être déplacé, ignoré ou manipulé. Il fonctionne toujours avec son comportement par défaut, qui consiste à tuer le processus.