寫一個python腳本監控在linux中的進程


在虛擬機中安裝Linux中的CentOS7系統

https://baijiahao.baidu.com/s?id=1597320700700593557&wfr=spider&for=pc

因為安裝的centos7的python版本為2.7我們要將他的版本升為3.5

安裝依賴

shell> yum -y install zlib-devel \
               bzip2-devel openssl-devel ncurses-devel \
               sqlite-devel readline-devel tk-devel \
               gdbm-devel db4-devel libpcap-devel xz-devel

下載編譯安裝

shell> cd /usr/local/src/
shell> wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
shell> tar xf Python-3.6.5.tgz
shell> cd Python-3.6.5
shell> ./configure --prefix=/usr/local/python3.6.5
shell> make -j 4 && make install
shell> ln -s /usr/local/python3.6.5 /usr/local/python3
shell> echo -e '# Python PATH\nexport PATH=/usr/local/python3/bin:$PATH' >>/etc/profile
shell> source /etc/profile
shell> python3 -m pip install --upgrade pip

 

 

寫一個在linux系統中持續運行的后台程序

import time
def sleeptime(hour,min,second):
        return hour * 3600 + min * 60 + second
a =1
sec=sleeptime(0, 0, 5)
while a == 1:
    time.sleep(sec)
    print('kaishizhixing')

每隔5秒輸出一次 也可以直接寫一個跟簡單的

a = 1
while a =1:
        print('kaishizhixing")

 

寫一個監控腳本 檢測程序是否一致在執行

我們可以在shell命令中查詢程序的狀態

ps -ef|grep jiaoben.py

15589和13784是該進程的主id和副id

 

編寫一個監控進程,監控此腳本是否一直運行。

import os
import re
import datetime
import paramiko
import smtplib
from email.mime.text import MIMEText
from email.header import Header
process ="/home/languid/jiaoben.lock"
os.system("ps -ef|grep jiaoben.py|grep -v grep >%s" % process)
if not(os.path.getsize(process)):
os.system("nohup /home/languid/jiaoben.py %")
baocuoemali()
else:
print("腳本正常!")

  

 

再增加一個當腳本發生錯誤時的郵件通知。

 

#!/usr/bin/python3
 
import smtplib
from email.mime.text import MIMEText
from email.header import Header
 
sender = 'from@baocuo.com'
receivers = ['626549364@qq.com']  

message = MIMEText('腳本錯誤...', 'plain', 'utf-8')
message['From'] = Header("languid", 'utf-8')     
message['To'] =  Header("測試", 'utf-8')
 
subject = 'Python SMTP 報錯'
message['Subject'] = Header(subject, 'utf-8')
 
 
try:
    smtpObj = smtplib.SMTP('localhost')
    smtpObj.sendmail(sender, receivers, message.as_string())
    print ("郵件發送成功")
except smtplib.SMTPException:
    print ("Error: 無法發送郵件")

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM