kill -INT 与kill -TERM

问题描述 投票:0回答:3

SIGINT
信号和
SIGTERM
信号有什么区别?我知道
SIGINT
相当于按键盘上的 ctrl+c,但是
SIGTERM
是做什么用的呢?如果我想优雅地停止某些后台进程,我应该使用哪一个?

unix signals kill
3个回答
21
投票

响应的唯一区别取决于开发人员。 如果开发人员希望应用程序对

SIGTERM
的响应与对
SIGINT
的响应不同,则将注册不同的处理程序。 如果您想正常停止后台进程,通常会发送
SIGTERM
。 如果您正在开发应用程序,您应该通过优雅退出来响应
SIGTERM
SIGINT
通常以相同的方式处理,但并非总是如此。 例如,通过报告状态或部分计算来响应
SIGINT
通常很方便。 这使得用户在终端上运行应用程序可以轻松获得部分结果,但终止程序会稍微困难一些,因为它通常需要用户打开另一个 shell 并通过
SIGTERM
发送
kill
。 换句话说,这取决于应用程序,但惯例是通过正常关闭来响应
SIGTERM
,两个信号的默认操作都是终止,并且大多数应用程序通过正常停止来响应
SIGINT


11
投票

如果我想优雅地停止某些后台进程,我应该使用哪一个?

unix 信号列表可以追溯到计算机拥有串行终端和调制解调器的时代,这就是“控制终端”概念的起源。 当调制解调器掉线时,线路会挂起 因此,

SIGHUP(1)

表示连接丢失,迫使程序退出或重新启动。 对于像 syslogd 和 sshd 这样的守护进程,没有终端连接但应该保持运行的进程,SIGHUP通常是用于重新启动或重置的信号。

SIGINT(2)

SIGQUIT(3)

字面意思是 “中断”“退出” - “从键盘” - 如果程序出现问题,用户可以立即控制。 对于基于物理字符的终端,这将是 停止程序的唯一方法! SIGTERM(15) 与任何终端处理无关,只能从另一个进程发送。 这将是发送到后台进程的传统信号。

SIGINT

1
投票
中断

信号, 当用户按下

Ctrl
+C 时发送。 SIGTERM 是一个

termination

信号,它被发送到进程以请求该进程终止,但它可以被该特定进程捕获或忽略。

    
© www.soinside.com 2019 - 2024. All rights reserved.