根据使用psutil Python运行的时间来终止进程

时间:2013-12-22 15:35:16

标签: python command-line-arguments

我正在运行许多名为“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 个答案:

答案 0 :(得分: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()

答案 1 :(得分:0)

>>> 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'