일반적으로 Apache Tomcat은 shutdown.sh
스크립트 (또는 배치 파일)를 실행하여 종료합니다. 톰캣의 웹 컨테이너가 멀티 쓰레딩과 같은 미친 짓을하는 웹 애플리케이션을 호스팅 할 때, shutdown.sh
을 실행하면 일부 톰캣이 정상적으로 종료됩니다 (시스템에 사용 가능한 메모리가 늘어남을 볼 수 있듯이). Tomcat 프로세스는 계속 실행됩니다. 내가하는 간단한 파이썬 스크립트를 작성하려고 해요Tomcat의 PID를 찾아 파이썬에서 죽이는 방법은 무엇입니까?
: kill -9 <PID>
을 가진 프로세스를 종료 해당되는 경우
- 통화가
shutdown.sh
- 실행합니다
ps -aef | grep tomcat
톰캣과 모든 프로세스를 찾을 수는 - 를 참조
여기까지 가야합니다. (프로토 타입으로 - 저는 Python BTW의 새로운 기능입니다) :
#!/usr/bin/python # Imports import sys import subprocess # Load from imported module. if __init__ == "__main__": main() # Main entry point. def main(): # Shutdown Tomcat shutdownCmd = "sh ${TOMCAT_HOME}/bin/shutdown.sh" subprocess.call([shutdownCmd], shell=true) # Check for PID grepCmd = "ps -aef | grep tomcat" grepResults = subprocess.call([grepCmd], shell=true) if(grepResult.length > 1): # Get PID and kill it. pid = ??? killPidCmd = "kill -9 $pid" subprocess.call([killPidCmd], shell=true) # Exit. sys.exit()
내가 중간 부분과 사투를 벌인거야 - 적어도 한 결과가 항상 반환됩니다 크기는 항상 자체에 대한 참조를 반환 이상 1 (
grep
이후 있는지 확인하면서grep
결과를 얻기로, methinks)를 호출 한 다음 반환 된 PID를 구문 분석하여killPidCmd
에 전달합니다. 미리 감사드립니다!
와우 - 대단한 대답, 감사합니다 @Ionut Hulub (+1)! 빠른 추적 - 일단'pid '를 얻으면'killPidCmd'에 어떻게 추가합니까? 'killPidCmd = "kill -9 $ pid'을 사용할 수 있습니까? 아니면 다른 것을 사용할 필요가 있습니까? – IAmYourFaja
코드를 수정했습니다 –
"kill -9 "다음에 공백을 잊지 마십시오 :) – Sandro