2017-12-29 2 views
2

내가 https://stackoverflow.com/a/29755431/1355628에서 함수를 사용하여 명령을 분할 시도 하위 프로세스)

기능을 사용하여 파이프와 함께 간단한 명령을 사용해도 괜찮지 만 불행하게도 위의 코드는 작동하지 않는 것 같습니다 (리턴 코드는 완전히 무작위로 보인다 ...)

감사합니다. dvance

+0

최종 목표는 여기에 무엇 당신이 파이썬을 사용하여 실행중인 프로세스를 죽이고 싶어 :

또 다른 (더 IMO) 솔루션과 같이 psutil 패키지와 os.kill을 사용하는 것입니다? – iamauser

+0

프로세스를 중지하는 데 여러 가지 방법을 사용해야합니다. 때로는 간단한 "서비스 xxx stop"은 괜찮지 만 일부 프로세스에서는 충분하지 않습니다 (kill 필요) –

답변

4

subprocess.run은 서브 쉘에서 명령을 실행하는 옵션 인 shell=True을 취합니다. 그러나 사용자 입력을 처리하는 경우 Security Considerations을 읽어보십시오. ,

import psutil 
processes = [p for p in psutil.pids() if 'httpd' in psutil.Process(p).name()] 
for process in processes: 
    os.kill(...) 
+0

나는 다음과 같이 시도했습니다 : 'cmd = "kill $ (ps aux | grep proces [s] awk '{ pop = subprocess.Popen (cmd, stderr = subprocess.STDOUT, stdout = subprocess.PIPE, shell = True) pop.wait (인쇄 할 때 $ 2를 사용합니다.), rm -f/var/lock/process &) print "return code is : % d"% pop.returncode' bash에서 명령을 실행해도 문제가 없지만 파이썬에서는 오류가 발생합니다. "return code is -15"(0 대신) –

관련 문제