Python을 통한 Linux의 프로세스 목록


답변:


128

/proc파일 시스템을 보는 IMO 는 텍스트 출력을 해킹하는 것보다 덜 불쾌 ps합니다.

import os
pids = [pid for pid in os.listdir('/proc') if pid.isdigit()]

for pid in pids:
    try:
        print open(os.path.join('/proc', pid, 'cmdline'), 'rb').read().split('\0')
    except IOError: # proc has already terminated
        continue

10
cmdline을 읽을 때 os.listdir ( '/ proc') 읽기에서 반환 된 pid가 더 이상 존재하지 않을 수 있으므로 read () 호출을 try / except 블록으로 둘러싸 야합니다.
Yanamon 2012-09-05

4
드디어! 확인! 이제 멈출 수 있습니다! :-)
bobince 2011

5
-1 포터블 아니라 이후 / PROC 더 나은 인터페이스를 사용할 수있다
좋은 사람

2
조심하세요 : 명령 줄은 0x00으로 끝납니다. 공백도 동일한 문자로 대체됩니다.
Federico

2
그냥 사용하십시오 psutil-멋진 Pythonic 인터페이스를 통해이 모든 작업을 수행하며 Linux가 아닌 서버에서 실행하려는 경우 이식 가능합니다.
RichVel 2015

83

psutil 을 플랫폼 독립 솔루션으로 사용할 수 있습니다 !

import psutil
psutil.pids()

[1, 2, 3, 4, 5, 6, 7, 46, 48, 50, 51, 178, 182, 222, 223, 224,
268, 1215, 1216, 1220, 1221, 1243, 1244, 1301, 1601, 2237, 2355,
2637, 2774, 3932, 4176, 4177, 4185, 4187, 4189, 4225, 4243, 4245, 
4263, 4282, 4306, 4311, 4312, 4313, 4314, 4337, 4339, 4357, 4358, 
4363, 4383, 4395, 4408, 4433, 4443, 4445, 4446, 5167, 5234, 5235, 
5252, 5318, 5424, 5644, 6987, 7054, 7055, 7071]

2
문서를 살펴보십시오 .
enthus1ast

알려 주셔서 감사합니다! 깔끔한 패키지.
codekoala 2011

5
그것은 완전히 플랫폼 독립적이지 - 당신은 AccessDenied 오류로 실행할 수 있습니다 OSX에 : groups.google.com/forum/?fromgroups=#!topic/psutil/bsjpawhiWms
아모스

@amos는 의미가 있습니다. 프로세스에 대한 정보에 접근하기 전에 먼저 권한을 갖기를 원합니다. 힌트 주셔서 감사합니다.
JSmyth

OSX 포인트를 확대하려면 Linux와 달리 프로세스 정보를 얻으려면 OSX에 대한 루트 권한이 필요합니다.
RichVel 2015

8

PSI 와 같은 타사 라이브러리를 사용할 수 있습니다 .

PSI는 프로세스 및 아키텍처, 부팅 시간 및 파일 시스템과 같은 기타 기타 시스템 정보에 대한 실시간 액세스를 제공하는 Python 패키지입니다. 지원되는 모든 플랫폼에서 일관되지만 원하는 경우 플랫폼 별 세부 정보를 노출하는 Pythonic API가 있습니다.


2
PSI는 2009 년에 마지막으로 업데이트되었지만 psutil은 이번 달 (2015 년 11 월)에 업데이트되었습니다. psutil이 더 나은 선택 인 것 같습니다.
RichVel 2015

7

하위 프로세스를 만들고 사용하는 승인 된 방법은 하위 프로세스 모듈을 사용하는 것입니다.

import subprocess
pl = subprocess.Popen(['ps', '-U', '0'], stdout=subprocess.PIPE).communicate()[0]
print pl

명령은 셸에서 실행할 필요가 없도록 파이썬 인수 목록으로 나뉩니다 (기본적으로 subprocess.Popen은 어떤 종류의 셸 환경도 사용하지 않고 실행 만합니다). 이 때문에 우리는 단순히 Popen에 'ps -U 0'을 제공 할 수 없습니다.


0

하위 프로세스 모듈을 사용하여 ps적절한 옵션으로 명령을 실행합니다 . 옵션을 추가하여 표시되는 프로세스를 수정할 수 있습니다. SO의 하위 프로세스에 대한 많은 예제. 이 질문ps 은 예를 들어 출력을 구문 분석하는 방법에 대한 답변입니다.)

할 수 있습니다, 같은 보여준 예를 들어 한 답변 도 사용 PSI의 (예에서 프로세스 테이블로 액세스 시스템 정보에 모듈을 ).


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.