2011-05-16 94 views

回答

4

您可以从其/ proc目录(/proc/<PID>)中找到有关进程的信息。

open(os.path.join('/proc', str(pid), 'stat')).readline().split()[2]=='T' 

编辑:这一次算式修正了原来的一个(可能是罕见的)错误:

re.sub(r'\(.*\)', '()', open(os.path.join('/proc', str(pid), 'stat')).readline()).split()[2]=='T' 
+0

不使用os.path.join!...等等,这是纯粹的linux问题。 – janislaw 2011-08-04 13:46:01

+0

@janislaw - 谢谢。 – 2011-08-04 15:35:57

4

调用ps并检查STAT值。 D不间断睡眠(通常为IO) R正在运行或可运行(在运行队列中) S可中断睡眠(等待事件完成) T由作业控制信号或因为正在跟踪而停止。 W分页(自2.6.xx内核以来无效) X dead(永远不会看到) Z已停止(“僵尸”)进程已终止但未由其父节点收回。

+0

谢谢你,我使用ps axo fname,stat,pid,并且就像你说的那样工作,我不知道STAT值是为了那个。 – CobraBytez 2011-05-16 18:42:43

2

您可以使用psuti升:具体来说,你可以用这个Python表达式查找其运行状态

>>> import psutil 
>>> pid = 1243 
>>> p = psutil.Process(pid) 
>>> p.status 
0 
>>> str(p.status) 
'running' 
>>> p.status == psutil.STATUS_RUNNING 
True 
>>> 
>>> p.suspend() 
>>> p.status 
3 
>>> str(p.status) 
'stopped' 
>>> p.status == psutil.STATUS_STOPPED 
True 
>>> 
>>> p.resume() 
>>> str(p.status) 
'running' 
>>> 
相关问题