2017-11-23 11 views
0

파이썬을 사용하여 "top"linux 명령의 출력을 변수에 저장 한 다음 grep을 사용하여 행을 얻는 방법을 고민하고 난 후에 고민했습니다. 나는 그것을 만들 수 없었다.어떻게 파이썬을 사용하여 리눅스 프로그램의 출력을 읽을 수 있습니까? (상단)

나는 파이썬 문서에서 서브 프로세스 모듈의 사용법을 읽었지만 제대로 작동하지 않는 것 같습니다. 그 이유는 리눅스에서 최상위 명령을 실행하면 지속적으로 새로 고치는 살아있는 창을 얻게되기 때문입니다. "Top"은 "ls"또는 "cp"와 다릅니다.

내 질문은 이것입니다 : 어떻게 CPU 백분율과 같은 시스템 통계를 얻기 위해 파이썬을 사용할 수 있습니까? (preferebly top 명령을 사용하여,하지만 다른 명령을 사용하거나 파일에서 통계를 읽는다면 괜찮습니다)

미리 감사드립니다.

+0

뭔가를 시도 할 수 있습니다? (그런데 파이프 (stdin)을 통해 출력물을 얻는 것이 가능하지만 계속 업데이트를하므로 잠시 동안 읽은 다음 중지해야합니다.) – JohanL

+0

'top -n 1 '은 새로 고침없이 현재 프로세스를 표시합니다. 파일의 통계를 보려면 os.stat()를 사용하십시오. – Pulsar

+0

top에서 일괄 처리 모드 -b를 실행하고 출력을 구문 분석 할 수 있습니다. 또는/proc 파일 시스템에 대해 읽을 수 있습니다. – mjr104

답변

0

samples 옵션 top 명령을 사용하면 n 번 샘플링 할 수 있습니다.

top -l 1 
1

최고 출력을 얻을 수 -b-n를 사용해보십시오 : : 예를 들어

-b :Batch-mode operation 
    Starts top in Batch mode, which could be useful for sending output 
    from top to other programs or to a file. In this mode, top will 
    not accept input and runs until the iterations limit you've set 
    with the `-n' command-line option or until killed. 

-n :Number-of-iterations limit as: -n number 
    Specifies the maximum number of iterations, or frames, top should 
    produce before ending. 

:

$ top -b -n 1 
1

top에 의해 그래서, 다음 명령은 그 이후 단 한 시간과 휴식을 실행 default는 ncurses를 사용하므로 출력을 얻는 것이 까다로울 수 있습니다.

파이썬에는 psutil이라는 패키지가 있습니다. 대신 그것을 사용해야합니다.

당신이 정말로 top를 사용하려는 경우이 모드에서 맨

부터 -b 옵션 (배치 모드)

을 통과해야합니다, top 입력을 적용하고 때까지 실행되지 않습니다 -n 명령 줄 옵션을 사용하여 설정했거나 죽을 때까지 반복을 제한 할 수 있습니다.

그래서 당신은 당신이 지금까지 시도 이것이

>>> output = subprocess.check_output(['top', '-b', '-n1'])