为什么在unix中kill -9命令中的数字9?
我知道这是脱离主题,我无法在网上find任何地方,我想也许编程大师在社区可能知道这一点。
我通常使用
kill -9 pid
杀了这份工作 我总是想知道9的起源。我在网上查了一下,它说
“9意味着KILL信号不可捕捉或不可忽略,换句话说,它会告诉进程(一些正在运行的应用程序)立即退出”(来源: http ://wiki.answers.com/Q/What_does_kill_-9_do_in_unix_in_its_entirety)
但是,为什么9呢? 其他数字呢? 有什么历史意义呢还是因为Unix的架构?
有关其他信号的列表,请参阅Unix信号上的维基百科文章 。 SIGKILL刚好碰到了9号。
你可以使用助记符作为数字:
kill -SIGKILL pid
还有8个信号是他们首先提出来的。
我认为在这里更好的答案是这样的:
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
至于9的“意义”……我想说可能没有。 根据Linux编程接口(p388) :
每个信号被定义为从1开始依次开始的唯一(小)整数。这些整数用符号名称SIGxxxx定义。 由于每个信号所使用的实际数字因实现而异 ,因此这些符号名称总是在程序中使用。
首先,你需要知道类Unix系统中的信号是什么(这只需要几分钟)。
信号是发送到(运行)程序的软件中断,以指示发生了重要的事件。
事件可以从用户请求到非法内存访问错误。 一些信号,例如中断信号,表示用户已经要求程序做一些不属于正常控制stream程的事情。
我们可以使用几种types的信号 – 使用“ $ kill -l ”命令获得所有可用信号的完整列表:
在上面的输出中,它清晰可见,每个信号都有一个“ 信号编号 ”(例如1,2,3)和一个“ 信号名称 ”(例如SIGUP,SIGINT,SIGQUIT)。 要详细了解每个信号的function,请访问此链接 。
最后,谈到“为什么要在命令9中input9 ”这个问题:
有几种将信号传递给程序或脚本的方法。 发送信号的常用方法之一是使用kill命令 – 基本语法是:
$ kill -signal pid
其中信号是信号的编号或名称 ,然后是信号将发送到的进程Id(pid)。
例如-SIGKILL (或-9 ),信号立即终止进程。
$ kill -SIGKILL 1001
和
$ kill -9 1001
两个命令都是一样的东西,即上面我们使用过的“信号名称”,后来我们使用了“信号编号”。
结论 :对于是否使用kill命令使用“信号名称”或“信号编号”是一个开放的select。
这是甲壳虫乐队提及的“Revivelution 9”。 一连串的声音剪辑和发现的噪音,这个录音特点约翰列侬一遍又一遍地重复“9号,9号……”此外,这首歌曲在1969年引起了进一步的关注,当发现倒退时,约翰似乎要说“打开我,死人…”
因此第九个信号注定是杀死信号中最致命的。
有一个非常长的Unix信号列表,你可以在Wikipedia上查看。 有点令人困惑的是,你可以使用kill
来发送任何信号给进程。 例如, kill -SIGSTOP 12345
强制进程12345暂停执行,同时kill -SIGCONT 12345
通知它恢复。 kill -9
一个稍微不太神秘的版本是kill -SIGKILL
。
我认为对第9位没有任何意义。此外,尽pipe普遍认为kill
不仅用于杀死进程,而且还向进程发出信号。 如果你真的好奇,你可以在这里和这里阅读。
两者与kill -sigkill processID相同,kill -9 processID。 它基本上是强制终止进程。
在shell上inputkill -l命令
你会发现在第九个数字[ 9] SIGKILL ],所以可以使用杀死-9或杀死-SIGKILL
SIGKILL可以肯定的是kill信号,它不能被置位,忽略或者处理。 它始终与其默认行为一起工作,即终止进程。
有一些过程不能像这样杀死%1。 如果我们不得不终止那个进程,那么使用特殊命令来杀死那个被kill -9的进程。 例如打开vim,如果通过使用ctrl + z停止,然后看到作业和应用杀死进程后,这个进程将不会终止,所以我们使用kill -9命令来终止。
-9
是signal_number,并指定发送的kill消息应该是KILL(不可捕获,不可忽略)types。
kill -9 pid
这和下面一样。
kill -SIGKILL pid
没有指定信号编号,缺省值是-15,即TERM(软件终止信号)。 inputkill <pid>
与kill -15 <pid>
。