基于psutil Python,根据进程运行时间终止进程

3

我正在运行许多名为"csm.py"的进程。每个进程都有一个命令行参数,例如"testarg"。

"csm.py testarg"。

我正在使用psutil成功地检查是否有另一个同名进程("csm.py testarg")正在运行,使用以下代码:

for process in psutil.process_iter():
        cmdline = process.cmdline
        if result[0][2] in cmdline:
            proc += 1
        if proc >= 2:
            # DO SOMETHING

我想做的是找出是否有一个名为"csm.py testarg"的进程在运行,而且它已经运行了超过1小时,如果是则杀死它,但不要杀死正在检查旧的"csm.py testarg"的新进程(即此进程)。使用psutil能否获取进程的启动时间/日期?
谢谢。
2个回答

1
>>> import os, psutil, datetime
>>> p = psutil.Process(os.getpid())
>>> p.create_time()
1307289803.47
>>> datetime.datetime.fromtimestamp(p.create_time()).strftime("%Y-%m-%d %H:%M:%S")
'2011-03-05 18:03:52'

1

我成功地想出了以下解决方案:

for process in psutil.process_iter():
    pid = process.pid
    cmdline = process.cmdline
    if what_im_looking_for in cmdline:
        p = psutil.Process(pid)
        p.create_time
        pidcreated = datetime.datetime.fromtimestamp(p.create_time)
        allowed_time = pidcreated + datetime.timedelta( 0, 5400 )
        now = datetime.datetime.now()
        if now > allowed_time:
            print "Killing process {} Start time: {} Current time: {}".format( pid, pidcreated, now)
            p.kill()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接