kill 命令

原文参考:https://zhuanlan.zhihu.com/p/140531888

想要在Linux中终止一个进程有两种方式,前台进程可以使用Ctrl+C键进行终止;
后台进程,那么需要使用kill命令来终止。(其实Ctrl+C也是kill命令,kill -2)

kill命令的格式是:

	kill[参数][进程号]

	如:
	kill 21121
	kill -9 21121

其中[参数]是可选的,进程号可以通过jps/ps/pidof/pstree/top等命令获取。

参数有多种类型,通常使用信号。信号如果没有指定的话,默认会发出终止信号(kill -15)。
常用的信号如下:

	HUP 1 终端断线  
	INT 2 中断(同 Ctrl + C)
	QUIT 3 退出(同 Ctrl + \)
	TERM 15 终止
	KILL 9 强制终止
	CONT 18 继续(与STOP相反, fg/bg命令)
	STOP 19 暂停(同 Ctrl + Z)

比较常用的就是强制终止信号:9和终止信号:15,另外。中断信号:2其实就是Ctrl + C结束前台进程。

Kill -9 是强制杀掉,这个信号程序应该是无法捕捉的。

linux 使用 kill -9 命令杀死程序,程序是无法主动释放资源的。操作系统从进程表中直接清除该程序,而不会给程序任何通知和反应时间。

kill -15 是可以被执行、阻塞和忽略的

kill -15 只是通知对应的进程要进行"安全、干净的退出",退出前一般会进行资源释放、临时文件清理等等,再进行程序的终止。
但如果在"准备工作"进行过程中,遇到阻塞或者其他问题导致无法成功,那么应用程序可以选择忽略该终止信号。

在非必要时,不要使用kill -9命令,尤其是那些web应用、提供RPC服务、执行定时任务、包含长事务等应用中,因为kill -9没给spring容器、tomcat服务器、dubbo服务、流程引擎、状态机等足够的时间进行收尾。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐