問題描述:使用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)