/var/run/*.pid already exist. Daemon already running?

如题,我遇到的一个问题,这个问题的产生是因为非正常结束进程服务造成,比如突然断电等,我的操作就是pkill -9 server_name 造成的。

我反复的执行启动和停止服务的命令,但是用ps查看进程时,是没有成功的。后来 在网上看到重启服务器的命令,我就拿来搞了shutdown -h now ,我个二货,等了10分钟,再去连服务器的时候,总是连不上,忽然发现,麻蛋,我执行的是关机命令,而不是reboot,sb了。。。有种被大鹅支配的恐惧。赶紧找机房同事去把服务器点亮!

重连上服务器后,依然是这个问题,进程没有起来。然后在网上看到了一下内容

(1) pid文件的内容:pid文件为文本文件,内容只有一行, 记录了该进程的ID。 用cat命令可以看到。 
(2) pid文件的作用:防止进程启动多个副本。只有获得pid文件(固定路径固定文件名)写入权限(F_WRLCK)的进程才能正常启动并把自身的PID写入该文件中。其它同一个程序的多余进程则自动退出。 

(3) 编程技巧: 
    调用fcntl设置pid文件的锁定F_SETLK状态,其中锁定的标志位F_WRLCK。 
    如果成功锁定,则写入进程当前PID,进程继续往下执行。 
    如果锁定不成功,说明已经有同样的进程在运行了,当前进程结束退出。 

我看到了关键写入权限 , 我赶紧去/var/run/ 下创建了一个a.pid文件,然后赋给他权限chmod 777 a.pid 然后,执行了一下启动服务的命令,结果成功了。

这时,我再去看看这个a.pid文件,里面已经有进程id了。问题解决!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值