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.