動態獲取腳本進程pid進程號,linux 查看python腳本狀態,通過os模塊獲取任意腳本pid進程號,再通過psutil包獲取當前腳本運行狀態,並輸出日誌

首先要安裝

pip install psutil 
# psutil這個包是第三方包需要自己安裝

判斷CPU狀態

#!/usr/bin/python3
# 這次是監視單個進程所佔CPU的資源百分比,上一個版本是判斷整個樹莓派CPU佔
#用率,這個雖然能實現功能,但是存在風險,有些情況下不是我寫的腳本所引起的
#整個樹莓派CPU佔用率過高就,進行重啓程序。


import psutil as p
import os
import logging

logging.basicConfig(level=logging.DEBUG,
                    filename='thread_cpu_log1.0.log',
                    filemode='a',
                    format=
                    '%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s')
                    #filename='/home/pi/Desktop/thread_cpu_log1.0.log',是linux操作目錄你可以寫成當前目錄下
try:
    pid1 = os.popen( 'ps -ef | grep threading_modbus_16_005.py | grep -v "grep"') #獲取整個進程的狀態,在第一個grep 後輸入的是你python腳本的名稱
    pid2 = pid1.read()[11:14]  # 字符串截取獲取當前進程的pid 也就是進程號
    # 接下來通過進程號獲取 當前進程號 的狀態
    pid_cpu = p.Process(int(pid2)).cpu_percent() #創建對象並獲取佔用CPU

    if pid_cpu > 100:
        logging.debug('重啓一次')
        os.system('sudo reboot')
    else:
        logging.debug('正常')
except:
    logging.debug("所查詢進程進程沒啓動")
# os模塊的使用
os.system()  #python環境執行linux命令 返回值 只有 0,1,2
os.popen()  #管道的作用是有返回值得同 執行linux命令後得到的返回值相同, #是字符串類型,獲取想要的變量需要切片
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章