Bash Man Sayfa: kill <pid> vs kill -9 <pid>


25

Adam sayfam arasındaki farkı belgelemiyor

kill <pid>

ve

kill -9 <pid>

Bunlar farklı şeyler yaptığından, neden -9 kılavuzda belgelenmiyor kill? Bunun kabuğa özgü bir şey olduğunu düşündüm, bu yüzden bash man sayfasına da baktım ama şansım yoktu.

Bonus sorusu: -9 ne yapar?

Yanıtlar:


40

killSadece verilen sürece bir sinyal gönderir. -9Göndermek için sinyal söyler.

Farklı sayılar farklı ortak sinyallere karşılık gelir. SIGINTÖrneğin, bu yüzden bir sürecini göndermek, 2'dir SIGINTkomut sinyali sorunu

$ kill -2 <pid>

Buradaki manpage şunları belirtir:

Kill için varsayılan sinyal TERM'dir.

Manpage ayrıca gönderebileceğiniz bir sinyal tablosu sağlar. Bu tabloya göre, TERMolduğu 15, bu nedenle bunların hepsi eşdeğerdir:

kill <pid>
kill -15 <pid>
kill -TERM <pid>

Uyarı 9, KILLsinyaldir.

   Name   Number  Action
   -----------------------
   ALRM      14   exit
   HUP        1   exit
   INT        2   exit
   KILL       9   exit  this signal may not be blocked
   PIPE      13   exit
   POLL           exit
   PROF           exit
   TERM      15   exit     [Default]
   USR1           exit
   USR2           exit
   VTALRM         exit
   STKFLT         exit  may not be implemented
   PWR            ignore    may exit on some systems
   WINCH          ignore
   CHLD           ignore
   URG            ignore
   TSTP           stop  may interact with the shell
   TTIN           stop  may interact with the shell
   TTOU           stop  may interact with the shell
   STOP           stop  this signal may not be blocked
   CONT           restart   continue if stopped, otherwise ignore
   ABRT       6   core
   FPE        8   core
   ILL        4   core
   QUIT       3   core
   SEGV      11   core
   TRAP       5   core
   SYS            core  may not be implemented
   EMT            core  may not be implemented
   BUS            core  core dump may fail

   XCPU           core  core dump may fail
   XFSZ           core  core dump may fail

8
Varsayılan sinyal ( kill <pid>) TERM'dir.
heavyd

9
Rakamlar genellikle, ancak her zaman değil, farklı Unix tabanlı sistemlerde aynıdır. Sinyal adını kullanmak daha iyi bir uygulamadır. Yani, -9 yerine öldür -KILL kullanın.
mpez0

7
Ben KILLve STOPsinyallerin yakalanamayan sinyaller olduğunu eklerdim. Bu TERM, bir sürece bir sinyal gönderildiğinde, onu yakalayabileceği ve yapması gereken çeşitli "kapatma" işlemlerini gerçekleştirebildiği anlamına gelir . KILLSinyali hemen işlemi durdurulur.
Neo

5
Öncelikle varsayılan sinyali kullanmak, varsayılanı işe yaramazsa sadece -9 kullanmak en iyisidir. Bunun nedeni -9'un yakalanamamasıdır, böylece programın herhangi bir temizlik yapma şansı yoktur. Ayrıca, sisteminizdeki sinyallerin belgelerini deman 7 signal
sonraki bildirime kadar Duraklatıldı.

7

Varsayılan sinyal, programın onu yakalamasını ve çıkmadan önce biraz temizlik yapmasını sağlayan TERM'dir. Bir program, bu şekilde yazılmışsa, onu da görmezden gelebilir.

Sinyal olarak -9 veya KILL belirtilmesi, programın onu yakalamasına, temizleme yapmasına veya onu görmezden gelmesine izin vermiyor. Sadece son çare olarak kullanılmalıdır.

kill -lBash'deki sayıların ve sinyal adlarının listesini görmek için, (harf ell) kullanın .


4

Ubuntu Linux kullanıyorum.

Kill komutları, temelde bitirmesi için işleme sinyal gönderir. Günlük bilgisayar kullanımının karmaşık davranışsal beklentilerini basitleştirmek için kill komutunun yanında çeşitli seçenekleri vardır.

Yukarıda açıklandığı gibi, tanımına karşılık gelen tüm kill numaraları seçenekleri.

Buna birkaç satır eklemek istiyorum.

 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    

Yukarıda gördüğünüz gibi, hepsi Ubuntu Linux kullanıyorsanız alacağınız öldürme seçenekleridir.

Ancak bazı öldürme sinyalleri tüm * NIX lezzetlerinde yaygındır.

kill -9 SIGKILL seçeneğidir ve çekirdek bu sinyali yok salamaz, yani bu -9 veya SIGKILL seçeneğini onurlandırır ve hemen işlemden çıkar. Unutmayın, bu işlem uygulama programları tarafından gerçekleştirilemez.

Öte yandan -15 kill, SIGTERM sinyalini gönderir; Bu varsayılan sinyaldir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.