当前位置:首页 > CN2资讯 > 正文内容

python 判断 Thread 是否已启动 python判断linux进程状态

4小时前CN2资讯



前天服务器突然不能访问了,ssh是能连上去,不过网站打不开了
在服务器上查了下进程,发现nginx没有启动,也不知道其中的原因。
这让我想起来当初现在使用的这个vps也有过不能访问的情况,也是由于nginx终止了运行
就想写一个脚本进去放到crontab里去定时监控

说到在linux里要监控一个进程是否运行也有很多的方法,可以使用ps看进程里是否有相关进程
不过在linux里每个进程都有一个pid文件对它对应,在程序运行时该文件就会存在,查看它的内容为程序当前运行的进程号
所以只要判断该文件是否存在就行了 我写的检测脚本如下


#!/usr/bin/env python # -*- coding: utf-8 -*- import os pf ="/usr/local/nginx/logs/nginx.pid" if not(os.path.exists(pf)): os.system("/etc/init.d/nginx start")


再说说crontab的设置,用户可以手动修改crontab来添加定时任务
另外系统里有默认的定时任务,你会在/etc目录下发现有
cron.daily cron.hourly cron.monthly cron.weekly 四个目录,看名字就知道它们分别是按天、小时、月、星期来执行目录下的脚本
把上面的代码保存成nginx.py放到cron.hourly目录下,记得加执行权限


chmod +x nginx.py


每小时执行一次
记得第一代码一定要加,否则将不能执行成功

昨天发现当nginx意外停止时pid文件是存在的,所以上面的代码就有问题了,在nginx意外停止后是不会自动重启的
不过也好修改,下面写出修改后的方案


#!/usr/bin/env python # -*- coding: utf-8 -*- import os pf ="/usr/local/nginx/logs/nginx.lock" #不再读取pid os.system("ps -A|grep nginx>%s"% pf) #将进程信息写入lock文件 if not(os.path.getsize(pf)): #判断文件大小,当nginx没有运行时上一步写入lock的内容为空 os.system("/etc/init.d/nginx start") #这里可以加入发短信的代码


还有也修改了定时任务,一小时检测一次总感觉时间太长了,就缩小到五分钟执行一次
这个要在crontab里手动编辑


crontab -e 0-59/5 * * * * /data/crontab/nginx.py #注意空格


重启crontab服务


/etc/init.d/crond restart





    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/20008.html

    分享给朋友:

    “python 判断 Thread 是否已启动 python判断linux进程状态” 的相关文章