Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在unix中kill-9命令中使用数字9?_Unix_Command_History_Kill - Fatal编程技术网

为什么在unix中kill-9命令中使用数字9?

为什么在unix中kill-9命令中使用数字9?,unix,command,history,kill,Unix,Command,History,Kill,我知道这是离题的,我在网上找不到任何地方,我想也许社区中的编程大师可能知道这一点。 我通常使用 kill -9 pid 杀了工作。我一直想知道9的起源。我在网上查了一下,上面写着 “9表示不可捕获或不可忽略的终止信号。换句话说,它将通知进程(某些正在运行的应用程序)立即退出”(来源:) 但是,为什么是9?其他的数字呢?是否有任何历史意义或是因为Unix的体系结构?他们首先想到了8个其他信号 有关其他信号的列表,请参阅。SIGKILL刚好得到9号 您也可以使用助记符,如数字: kill -SIG

我知道这是离题的,我在网上找不到任何地方,我想也许社区中的编程大师可能知道这一点。
我通常使用

kill -9 pid
杀了工作。我一直想知道9的起源。我在网上查了一下,上面写着

“9表示不可捕获或不可忽略的终止信号。换句话说,它将通知进程(某些正在运行的应用程序)立即退出”(来源:)


但是,为什么是9?其他的数字呢?是否有任何历史意义或是因为Unix的体系结构?

他们首先想到了8个其他信号

有关其他信号的列表,请参阅。SIGKILL刚好得到9号

您也可以使用助记符,如数字:

kill -SIGKILL pid

我认为9号没有任何意义。此外,尽管人们普遍认为,
kill
不仅用于终止进程,而且还向进程发送信号。
如果您真的很好奇,您可以阅读并查看。

有一个很长的Unix信号列表,您可以查看这些信号。有些令人困惑的是,您实际上可以使用
kill
向进程发送任何信号。例如,
kill-SIGSTOP 12345
强制进程12345暂停执行,而
kill-SIGCONT 12345
告诉它继续执行。《杀戮-9》的一个稍微不那么神秘的版本是《杀戮-SIGKILL》,《杀戮-SIGKILL》

,《杀戮-9》指的是披头士乐队的“Revoulution 9”。一组串在一起的声音片段和发现的噪音,这段录音的特点是约翰·列侬一遍又一遍地重复“9号,9号…”此外,这首歌在1969年引起了更多的关注,当时人们发现,当向后播放时,约翰似乎在说“打开我,死人…”


因此,第九个信号注定是最致命的杀伤信号。

我认为更好的答案是:

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的“意义”。。。我想说可能没有。根据:

每个信号定义为一个唯一的(小)整数,从 从1开始依次。这些整数在中用定义 形式SIGxxxx的符号名称。因为用于 每个信号在不同的实现中有所不同,这就是这些符号名称 通常在程序中使用的


两者都与kill-sigkill-processID、kill-9-processID相同。
它基本上用于强制终止进程。

首先,您需要知道类Unix系统中的信号是什么(只需几分钟)

信号是发送到(正在运行的)程序的软件中断,用于指示发生了重要事件

这些事件可能从用户请求到非法内存访问不等 错误。一些信号,如中断信号,表明 用户要求程序执行一些不正常的操作 控制流程

我们可以使用几种类型的信号-要获得所有可用/可能信号的完整列表,请使用“$kill-l”命令:

在上面的输出中可以清楚地看到,每个信号都有一个与之相关联的“信号编号”(例如1、2、3)和“信号名称”(例如SIGUP、SIGINT、SIGQUIT)。要详细了解每个信号的作用,请访问此

最后,谈到“为什么在kill-9命令中使用数字9”:

有几种向程序或脚本传递信号的方法。发送信号的一种常用方法是使用kill命令-基本语法为:

$ kill -signal pid
其中,信号是信号的编号名称,后跟将向其发送信号的进程Id(pid)

例如--SIGKILL(或-9),信号立即终止进程

$ kill -SIGKILL 1001

两个命令是同一件事,即上面我们使用了“信号名称”,后来我们使用了“信号编号”


裁决:在使用kill命令时,可以选择使用“信号名称”还是“信号编号”

在shell上键入kill-l命令

您将在第9个数字[9)处发现SIGKILL],因此可以使用 kill-9或kill-SIGKILL

SIGKILL是确定的终止信号,它不能被定位、忽略或处理。
它始终使用其默认行为,即终止进程。

有些进程无法终止,例如“终止%1”。如果我们必须终止这个进程,那么使用特殊的命令来终止这个进程,即kill-9。 如
如果使用ctrl+z打开vim并停止,则查看作业,然后在应用kill进程之后,此进程将不会终止,因此我们在这里使用kill-9命令终止。

代码-9是信号号,并指定发送的kill消息应为kill(不可捕获、不可忽略)类型

如下所示

kill -SIGKILL pid

在不指定信号号的情况下,默认值为-15,即术语(软件终止信号)。键入
kill
kill-15

SIGKILL
用于终止进程相同<不能忽略或处理代码>SIGKILL。在Linux中,提供
SIGKILL
的方法

kill -9 <process_pid> 
kill -SIGKILL <process_pid> 
killall -SIGKILL <process_name>
killall -9 <process_name>
kill-9
kill-SIGKILL
基拉尔-西格尔
基拉尔-9
为什么要杀人-9:
信号列表中的数字9被选为SIGKILL,是指“杀死一只猫的9条生命”。

我认为,这个问题最好属于超级用户。comBack在当时(我指的是4.xBSD左右)你不能使用shell命令的助记符,这就是为什么数字9被写入大量陈旧的deck shell脚本的原因。发送信号的底层系统调用也被称为
kill
。可能是因为大多数ori的默认行为
kill -SIGKILL pid
kill -9 <process_pid> 
kill -SIGKILL <process_pid> 
killall -SIGKILL <process_name>
killall -9 <process_name>