kill
kill 命令通常用于终止执行中的程序。
kill可将指定的信息送至程序。默认送的信息为SIGTERM (信息编号为15),代表关闭进程
常见用法
kill -9 pid
kill -15 pid (效果等同于 kill pid )
其中 9 和 15 指的是信息编号
什么是信息编号
使用kill -l 命令可以查看信息及编号
image.png
信息编号代指不同的信息,不同的信息有不同的含义
可以看到 9代表 SIGKILL,15 代表 SIGTERM
所以
kill -9 pid 代表 发送SIGKILL信息给这个pid的程序
kill -15 pid 代表 发送SIGTERM信息给这个pid的程序
那么 SIGTERM(15)和 SIGKILL(9)有什么区别
SIGTERM :当进程接收到SIGTERM后,大多会先释放自己的资源,再停止进程,属于正常关闭进程,但是如果进程正在工作,处理io等,不会立马关闭,或者 进程卡死的情况,都会导致SIGTERM不起作用。
SIGKILL : SIGKILL信号要求进程 立即关闭,强制关闭进程。
工作中关闭进程时,<mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">先kill pid(默认使用编号15),如果不起作用 再使用 kill -9 pid。</mark>
实战
查看nginx的pid: ps -ef | grep nginx
可以看到nginx的主进程编号 是 7901
image.png
正常关闭 nginx的主进程
kill -15 7901 或者 kill 7901
再次查看nginx的进程
发现已经关闭
image.png
启动nginx,查看进程号,再强制关闭 nginx
nginx
ps -ef | grep nginx
kill -9 9827
ps -ef | grep nginx
可以看到 kill -9 只是强制关闭了 nginx的主进程,由于不是正常关闭,worker进程并没有被关闭,这就是强制关闭的弊端,再次关闭worker进程
kill -9 9828
image.png
网友评论