2011-05-16 15 views

Odpowiedz

4

Informacje na temat procesu można znaleźć w jego katalogu/proc (/proc/<PID>). W szczególności, można znaleźć swój bieg stan ten Pythona wyrażenia:

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

EDIT: To następny wyraz naprawia (prawdopodobnie rzadko) błąd z oryginału:

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

Nieużywanie os.path.join! ... czekaj, to jest czyste pytanie linuksowe. – janislaw

+0

@janislaw - dzięki. –

4

zadzwoń ps i sprawdź wartość STAT. D Bezprzerwowy tryb uśpienia (zwykle IO) R Praca lub uruchamianie (w kolejce uruchamiania) S Przerwa w trybie uśpienia (oczekiwanie na zakończenie zdarzenia) T Zatrzymany, albo przez sygnał kontroli zadania, albo dlatego, że jest śledzony. W paging (nie ważne od jądra 2.6.xx) X dead (nigdy nie powinno być widoczne) Z Proces Defunct ("zombie"), zakończony, ale nie pobrany przez jego rodzica.

+0

Dziękuję, użyłem ps axo fname, stat, pid i który działał dokładnie tak, jak powiedziałeś, nie wiedziałem, że wartość STAT była do tego. – CobraBytez

2

Można użyć 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' 
>>>