2011-05-16 22 views

Trả lời

4

Bạn có thể tìm thông tin về quy trình từ thư mục/proc của nó (/proc/<PID>). Cụ thể, bạn có thể tìm thấy tình trạng chạy của nó với các biểu hiện này python:

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

EDIT: biểu hiện tiếp theo này sửa chữa một lỗi (có lẽ hiếm) với bản gốc:

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

Không sử dụng os.path.join! ... đợi đã, đây là câu hỏi Linux thuần túy. – janislaw

+0

@janislaw - cảm ơn. –

4

gọi ps và kiểm tra giá trị STAT. D Giấc ngủ không gián đoạn (thường là IO) R Chạy hoặc chạy được (trên hàng đợi) S Giấc ngủ gián đoạn (chờ một sự kiện hoàn thành) T Ngừng, hoặc bằng tín hiệu điều khiển công việc hoặc vì nó đang được truy tìm. Phân trang W (không hợp lệ kể từ hạt nhân 2.6.xx) X chết (không bao giờ được nhìn thấy) Quy trình không tồn tại ("zombie") bị chấm dứt nhưng không bị cha mẹ của nó gặt hái.

+0

Cảm ơn bạn, tôi đã sử dụng ps axo fname, stat, pid và hoạt động giống như bạn đã nói, tôi không biết giá trị STAT là cho điều đó. – CobraBytez

2

Bạn có thể sử dụng 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' 
>>>