您的位置:首页 > 编程语言 > Python开发

python编写守护进程

2015-11-17 15:38 726 查看
  linux环境下通常使用shell来写小脚本守护某个服务,最近强制自己使用python来写管理脚本,在实践中学习python。shell在linux管理方面固然简单便捷,命令行直接调用,但是python可以直接套用模块来实现,比如说打印日志:在shell中我们需要定义日期,打印信息等内容,脚本显得比较乱;而python通过logging模块或其他模块,让我们减少繁琐操作。

  下面我们就使用python监控mongodb的27018端口来体验下:

[test@localhost ~]vim mongo_guard.py
#!/usr/bin/env python
#-*- coding: UTF-8 -*-
import commands
import os
import logging

command = 'setsid /usr/local/bin/mongod --port 27018 --master --dbpath /data/mongodb_27018 --logpath /data/mongodb_27018/mongodb27018.log --logappend &'

logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',
datefmt = '%a, %d %b %Y %H:%M:%S',
filename = os.path.join('/opt/shell/','mongodb.log'),
filemode = 'a')

#27018
output = commands.getstatusoutput('netstat -ntlp|grep :27018')
status = int(output[0])
if status > 0:
logging.error('mongo 27018  down')
os.system(command)
else:
logging.info('mongo 27018 ok')
#        pass


在此我们调用了2个模块:

commands 执行系统命令,返回命令执行结果,用于检测端口是否存在

os 也是执行系统命令,但是不会返回执行结果

logging 用于打印日志,便于我们记录端口宕掉的时间,以便我们查看

在当前目录下生成的日志mongodb.log如下:

[test@localhost ~]$ cat mongodb.log
Mon, 02 Nov 2015 16:20:48, mongo_guard.py, ERROR, mongo 27018  down
Mon, 18 Nov 2015 08:45:01, mongo_guard.py, INFO, mongo 27018 ok


以上日志格式如日志,日志级别等我们可以在logging模块自己定义。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: