处理挂掉的守护进程和其相关信息

在写守护进程的时候,会涉及一些启动锁文件,进程id文件等信息。而当程序一旦挂掉(有时候可能是程序不工作,多线程引起的资源死锁等。),要强制关闭进程并且删除相关的文件信息。手动来操作,比较麻烦。写个程序会比较好:

import subprocess,re,sys

pidReg = re.compile("root\s+(\d+)\s")
def kill(process):
    p = subprocess.Popen("ps axu | grep py",shell=True,stdout=subprocess.PIPE)
    for pro in p.stdout.readlines():
        if pro.find(process)!=-1:
            pid = pidReg.findall(pro)[0]
            subprocess.call("kill -9 %s;rm -rf /usr/local/mm-bs/pid/%s.*" % (pid,process.split(".")[0]),shell=True)
            print "%s的进程id为%s,已被强制关闭!" % (process,pid)
            return 
    print "未找到%s!" % process

if __name__ == "__main__":
    args = sys.argv
    if len(args)!=2:
        print "格式错误!(kill.py processName)"
        sys.exit(1)

    try:
        kill(args[1].strip())
    except Exception,e:
        print e

代码中相关路径为我当前工作路径,请自行更改。
posted @ 2011-04-11 10:17  simayixin  阅读(850)  评论(0编辑  收藏  举报