linux kernel

一次kill进程的案例分析

Posted by lwk on July 27, 2022

有个业务反馈一台机器ssh登录不了了,ssh出现connection refused image

从监控没有发现机器异常情况,于是乎从云控制台vnc登录上去,发现sshd进程退出了,难怪ssh登录不上。那sshd进程到底为什么会退出呢? 首先想到的就是查下history,看看有没有人执行stop命令。 image 从history看到有人start和status过sshd进程,但是并没有stop sshd进程。那sshd进程为什么会dead呢?从history里看到了一个kill命令,会不会和这个有关系呢?用了这个命令在PVM测试机上试了一把发现果然sshd退出了

image

并且ssh也登录不了了,提示connection refused,查看下sshd进程的状态 image 我们strace 看下这条命令到底执行了啥 strace -ttT -f -v -s1024 -o s.log kill 12 -1 image

发现这条命令执行的时候别分成了两条kill命令,分别kill掉进程号是12和-1的进程,并且signal用的是SIGTERM(15) 进程号12这个是系统进程暂时可以不看,那么kill(-1, SIGTERM)这条命令到底执行了什么操作呢?针对kill命令来说-1是有效的吗?关于kill 掉进程号是-1的说法可以man kill查下就知道了

image

所以,kill 12 -1这种是kill掉进程号是12和金超大于1的所有进程(通过信号SIGTERM),如果是kill -1 12的话这种是kill掉进程号12(信号SIGHUP)