¿Hay una manera de determinar si un PID de Linux está en pausa o no?

Tengo una secuencia de comandos de python que utiliza los comandos SIGSTOP y .SIGCONT con os.kill para pausar o reanudar un proceso. ¿Hay una manera de determinar si el PID relacionado está en estado de pausa o reanudado?

Puede encontrar información sobre un proceso en su directorio / proc ( /proc/ ). Específicamente, puedes encontrar su estado de ejecución con esta expresión de python:

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

EDITAR: la siguiente expresión corrige un error (probablemente raro) con el original:

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

llame a ps y verifique el valor de STAT. D Suspensión ininterrumpida (generalmente IO) R En ejecución o ejecutable (en la cola de ejecución) S Suspensión interrumpible (en espera de que se complete un evento) T Detenida, ya sea por una señal de control de trabajo o porque se está rastreando. Paginación W (no válida desde el kernel 2.6.xx) X muerto (nunca se debe ver) Z Desactivado (“zombie”), finaliza, pero no es eliminado por su padre.

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