问题描述:使用python进行运行程序监控,一旦程序出现问题,立即重新启动,并进行邮件发送提醒
import os
from email.mime.text import MIMEText
from email.header import Header
import smtplib
import time
os.system("nohup python3 generate_waiting.py >> waiting.log 2>&1 &") # 前提 generate_waiting 存在
os.system("nohup python3 generate_running.py >> running.log 2>&1 &") # 前提 generate_running 存在
def send_email(info):
from_addr = '[email protected]' #发件邮箱
password = 'jelpkwpaxxejbdfh' #邮箱授权密码
to_addr = ['[email protected]','[email protected]'] #收件邮箱
smtp_server = 'smtp.qq.com' #SMTP服务器
message ='hello,world!'
msg = MIMEText(message,'plain','utf-8')
msg['Subject'] = Header("来自Python的邮件",'utf-8')
msg['From'] = Header(from_addr)
for email_id,email in enumerate(to_addr):
msg['To'] = Header(email,'utf-8')
try:
server = smtplib.SMTP(smtp_server,25) #第二个参数为默认端口为25,有些邮件有特殊端口
print('开始登录')
server.login(from_addr,password) #登录邮箱
print('登录成功')
print("邮件开始发送")
server.sendmail(from_addr,email,msg.as_string()) #将msg转化成string发出
server.quit()
print("邮件发送成功")
except smtplib.SMTPException as e:
print("邮件发送失败",e)
while True:
wait_process ="./.wait_pid"
os.system("ps -ef|grep generate_waiting.py|grep -v grep >%s" % wait_process)
if not(os.path.getsize(wait_process)):
print ("-----generate_waiting---- restart")
os.system("nohup python3 generate_waiting.py >> waiting.log 2>&1 &")
send_email("-----generate_waiting---- restart")
else:
print("-----generate_waiting---- normal")
run_process ="./.runn_pid"
os.system("ps -ef|grep generate_running.py|grep -v grep >%s" % run_process)
if not(os.path.getsize(run_process)):
print ("-----generate_running---- restart")
os.system("nohup python3 generate_running.py >> running.log 2>&1 &")
send_email("-----generate_running---- restart")
else:
print("-----generate_running---- normal")
time.sleep(15)