2011-05-16 7 views

답변

4

프로세스에 대한 정보는 해당/proc 디렉토리 (/proc/<PID>)에서 찾을 수 있습니다.

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

편집 : 당신은 psuti리터을 사용할 수 있습니다

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

os.path.join을 사용하지 않는다! ... 잠깐, 이것은 순수한 리눅스 질문이다. – janislaw

+0

@ janislaw - 감사합니다. –

4

ps를 호출하고 STAT 값을 확인하십시오. D 인터럽트 가능 슬립 (대개 I/O) R 실행 중이거나 실행 가능 (실행 대기열에서) S 인터럽트 가능 슬립 (이벤트 대기 중) T 작업 제어 신호 또는 추적 중이므로 중지됨. W 페이징 (2.6.xx 커널 이후 유효하지 않음) X가 죽었습니다 (절대로 보지 말 것) Z 프로세스가 종료되었습니다 ("좀비") 프로세스가 종료되었지만 부모에 의해 종료되지 않았습니다.

+0

PS axo fname, stat, pid를 사용했는데, 당신이 말했던 것처럼 작동했습니다. STAT 값이 그랬는지 몰랐습니다. – CobraBytez

2

:이 다음 표현식은 원래와 (아마도 희귀 한) 버그가 수정되었습니다 특히,이 파이썬 표현식의 실행 상태를 확인할 수 있습니다

>>> 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' 
>>> 
관련 문제