Apache服务重启时pid不变的问题

   昨天客户现场的一台机器不知道什么原因突然down掉了,然后重启的时候一直报httpd(pid 6062) alaready running 

但是使用ps -ef|grep httpd 根本没有没有看到有相关的服务

再看看ps -ef|grep 6062

这个pid真的有进程在使用,但是这个并不是Apache的服务进程,尝试使用kill命令去把这个进程杀死,然而并没有什么作用,这个进程刚好也是不能被强制杀死

搞到这里也没有头绪了,再加上已经是晚上11点了,就滚回家洗洗睡了;

   今天早上过来的时候现场的同事反映说问题解决了,不能重启的原因是pid被锁定了,看到这里,我突然灵光一闪,想起昨晚的都是使用service httpd restart这个命令来重启Apache的服务,会不会是这个restart命令不会变动pid呢,于是马上验证:

果然跟猜想的一样!!!最后在一篇博客上看到这么一段话:

apache在调用restart的时候,先去读取httpd.pid文件中先前进程的pid值,并向其发送一个SIGNALHUP信号,而启动意外挂掉重启,没有执行stop指令,pid文件没有被移除,于是再次调用restart的时候,会认为该进程pid号是存在的,仍然会发送一个SIGNALHUP信号给该进程号。由于系统刚启动,恰巧这个进程号已经被新的进程占用了,而apache发送的这个HUP信号,发送给了另外的新进程,导致系统出现了异常,被挂起。

好吧,又涨姿势了,下次遇到这样的问题就可以解决了!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值