我正在运行许多名为“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获取进程的开始时间/日期?
由于
答案 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'