2011-05-16 20 views

Respuesta

4

Puede encontrar información sobre un proceso en su directorio/proc (/proc/<PID>). En concreto, puede encontrar su estado correr con esta expresión Python:

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

EDIT: Esta expresión siguiente corrige un error (presumiblemente raro) con el original:

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

No usando os.path.join! ... espera, esta es una pregunta de Linux. – janislaw

+0

@janislaw - gracias. –

4

llama a ps y comprueba el valor STAT. D Sueño ininterrumpible (generalmente IO) R En ejecución o ejecutable (en la cola de ejecución) S Inactividad de espera (esperando a que se complete un evento) T Detenido, ya sea por una señal de control de trabajo o porque se está rastreando. W paginación (no es válido desde el núcleo 2.6.xx) X muerto (nunca debe verse) Z Proceso difunto ("zombie"), terminado pero no cosechado por su padre.

+0

Gracias, utilicé ps axo fname, stat, pid y eso funcionó como usted dijo, no sabía que el valor STAT era para eso. – CobraBytez

2

Puede utilizar psuti l:

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