簡體   English   中英

捕獲運行30分鍾以上的進程並發送報告

[英]Capturing a process running more than 30 mins and send the report

我寫了一個小的代碼,捕獲了運行在OS上的“ rm”進程。下面是代碼

bash-4.1$ cat CheckRM1.py
#!/usr/bin/python
import subprocess

def Check_Ps():
    ps = subprocess.Popen(['ps', '-eo' 'pid,user,args,etime='], stdout=subprocess.PIPE)
    output = ps.communicate()[0]
    for line in output.splitlines():
        if 'rm' in line:
            pss = (line)
            print pss

Check_Ps()

當我運行代碼時,它將以以下形式生成輸出:這基本上給出了進程ID號(PID),用戶名,命令以及最后一個自進程運行以來的總時間。 這次基本上使用[[dd-]hh:]mm:ss格式。 就我而言,它運行了9分鍾以上。

bash-4.1$ ./CheckRM1.py
22908 karn     rm -i e ee q r w                  09:19

現在,我正在尋找正在運行30分鍾以上的進程,然后將它們打印出來並發送郵件。 因此,任何只捕獲運行30分鍾以上的進程的想法都將受到贊賞。

注意:我正在使用python 2.7。

問題 :...如何僅捕獲運行超過30分鍾的進程

您已經關閉了,請split(..時間,每行之間用空格隔開,例如

import re

time_str = line.split(' ')[-1]
#  format [[dd-]hh:]mm:ss
time_items = [int(e) for e in re.split('[-:]', time_str)]

dd = 0
if len(time_items) == 2:
    hh = 0
    mm,ss = time_items
elif len(time_items) == 3:
    hh, mm, ss = time_items
else:
    dd,hh,mm,ss = time_items

print('Process is running {} Days {} Hours {} Minutes {} Seconds'.format(dd,hh,mm,ss))

time_minutes = (hh*60) + mm 
if  time_minutes >= 30:
    # do report

使用Python測試:3.4.2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM