kill -INT vs kill -TERM

Aje*_*i32 10 unix signals kill

SIGINT信号和SIGTERM信号之间有什么区别?我知道这SIGINT相当于在键盘上按Ctrl + C,但是SIGTERM用途是什么?如果我想优雅地停止一些后台进程,我应该使用哪些?

Wil*_*ell 12

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


Hen*_*eld 8

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

unix信号列表可以追溯到计算机具有串行终端和调制解调器的时间,这是控制终端的概念所源自的地方.当调制解调器掉落载波时,线路挂断.

因此,SIGHUP(1)表示连接丢失,迫使程序退出或重启.对于像syslogdsshd这样的守护进程,没有应该继续运行的终端连接的进程,SIGHUP通常是用于重启或重置的信号.

SIGINT(2)和SIGQUIT(3)实际上是"中断"或"退出","来自键盘",如果程序出现乱码,则可以让用户立即控制.使用基于物理角色的终端,这将是停止程序的唯一方法!

SIGTERM(15)与任何终端处理无关,只能从其他进程发送.这将是发送到后台进程的传统信号.