2017-01-31 1 views
-2

파이썬에서 터미널 stdin을 납치하는 방법이 있습니까? 유닉스 전용 솔루션이 잘 될 것이다.파이썬에서 터미널 stdin을 납치

현재 이름이 지정된 프로세스를 모니터링 할 수 있도록 top 주변에 작은 래퍼를 작성하고 있습니다. 모든 실행중인 파이썬 인스턴스. 기본적으로 pgrep을 호출하여 프로세스 ID를 얻은 다음 -p 옵션을 사용하여 top을 실행합니다.

전반적으로이 스크립트는 몇 년 동안 만족스럽게 작동했습니다 (top -p은 20 개의 ID 만 허용합니다 ...). 그러나 이름 패턴과 일치하는 새 프로세스가 생성되면 호출을 맨 위로 업데이트하도록 스크립트를 조정하고 싶습니다. 이것도 비교적 잘 작동하지만 ... top에서 대화식으로 설정된 옵션은 pid 목록을 업데이트 할 때마다 손실되지만, 자연스러운 원인으로 인해서 top을 중지했다가 다시 시작합니다. 따라서 나는 어떻게 든 설정이 영향을 미치도록 되돌릴 수 있도록 터미널 표준 입력을 납치하고 pid-list를 업데이트 한 후에 적절하게 설정할 수 있도록하거나 심지어 필요한 경우 업데이트를 중단합니다 (예 : 맨 위가 더 많은 지침을 기다리는 경우). 사용자).

이제 아마 내가 무엇을 달성하기 위해 노력하고있어 그냥 바보이고 내가보기 엔

가 (오. 태그 pstop가하는 태그로 사용 된 깨달음 감사하겠습니다 그렇다면 그것을 할 수있는 더 나은 방법이있다 하지가 존재하는 경우에, 나는 모든이 유틸리티는 관련이 후 해킹의 비트처럼 소리를 뭐), P

+0

나는 문제가이 구문 분석하는 데 문제가 있습니다. 어떤 대화식 옵션에 대해 이야기하고 있습니까? "백 트랙"이 무슨 뜻인지 잘 모르겠습니다. stdin을 통해 보내려하는 것은 무엇입니까? 아마도 당신이하고있는 일의 기록을 게시할까요? psutil https://pypi.python.org/pypi/psutil을 확인하십시오 – RobertB

+0

안녕하세요, 로버트입니다. 아마'top'의 맨 페이지에서 그걸 읽지 않으려 고합니다. – cpaitor

+0

정말요? 나는 정상에 익숙하다. 나는 단지 당신의 글을 읽으 려하고 있는데 혼란 스럽다. – RobertB

답변

0

\

덕분에 새로운 태그를 정의하는 새로운 여기에 있어요. 나는 단지 당신이 원하는 정확하게 수행하는 psutil을 사용하여 파이썬 스크립트를 작성합니다. 관심있는 정보가 무엇이든간에 psutil 등이 제공해야합니다.

신속하고 더러운 : 문서에

import psutil 
import time  

while True: 
    processes = [ p for p in psutil.process_iter() if 'python' in p.name() ] 

    for p in processes: 
     # print out whatever information interests you 
     print(
       p.pid, 
       p.name(), 
       p.cpu_percent(), 
       p.io_counters().read_bytes, 
       p.io_counters().write_bytes 
       ) 
    time.sleep(10) 

링크 : http://pythonhosted.org/psutil/

관련 문제