Monitor Systemd Services With Python
systemd service有时会自动退出。在这种情况下,为了保证服务能够24*7运行,需要额外做一些监控,当服务挂掉之后能够自动重启。这里我使用python写了一个监控脚本,将这个脚本放到定时任务中,就能够做到自动重启的效果。
代码如下
# -*- coding: utf-8 -*-
import subprocess
from subprocess import check_output,run
def get_process_id(service):
""" 返回服务的主进程 PID """
cmd = 'systemctl show %s --property=MainPID' % service
output = check_output(cmd, shell=1).decode('utf8')
pid = (output.split('\n')[0].split('=')[1])
return int(pid)
def check_service(service):
pid = get_process_id(service)
if pid > 0:
return
cmd = 'systemctl start %s' % service
cmd = ["systemctl","start",service]
ret = subprocess.run(cmd)
if ret.returncode == 0:
print("success:",ret)
else:
print("error:",ret)
if __name__ == '__main__':
check_service("mongod")
这个脚本功能比较简单,也没做异常处理,如果需要自己添加。over.