python编写守护进程
2015-11-17 15:38
726 查看
linux环境下通常使用shell来写小脚本守护某个服务,最近强制自己使用python来写管理脚本,在实践中学习python。shell在linux管理方面固然简单便捷,命令行直接调用,但是python可以直接套用模块来实现,比如说打印日志:在shell中我们需要定义日期,打印信息等内容,脚本显得比较乱;而python通过logging模块或其他模块,让我们减少繁琐操作。
下面我们就使用python监控mongodb的27018端口来体验下:
在此我们调用了2个模块:
commands 执行系统命令,返回命令执行结果,用于检测端口是否存在
os 也是执行系统命令,但是不会返回执行结果
logging 用于打印日志,便于我们记录端口宕掉的时间,以便我们查看
在当前目录下生成的日志mongodb.log如下:
以上日志格式如日志,日志级别等我们可以在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模块自己定义。
相关文章推荐
- Python特殊语法:filter、map、reduce、lambda
- Python基础学习-17个新手常见Python运行时错误
- python学习笔记第一天
- Python内存池管理与缓冲池设计
- 【python】实例-答题系统
- 使用python脚本配合cygwin自动备份文件搭配文件服务器
- 史上最直白的logistic regression教程 之 二
- easy_install和pip
- Mac下面解决PYTHONPATH配置的方法
- python py、pyc、pyo、pyd文件区别
- Python批量修改文件夹里文件的名称
- Python基本语法
- LeetCode OJ 系列之27 Remove Element --Python
- 【python】python连接mysql乱码问题
- Python中的copy和deepcopy
- Python中文编码
- python已安装了DNS处理模块,执行时却报错ImportError
- 【python】异常处理
- day4 python学习随笔
- python判断文件类型