通常,通過運行shutdown.sh
腳本(或批處理文件)關閉Apache Tomcat。在某些情況下,例如當Tomcat的Web容器託管一個使用多線程做一些瘋狂事情的Web應用程序時,正常運行shutdown.sh
會關閉某些部分Tomcat(因爲我可以看到更多可用內存返回到系統),但Tomcat進程仍在運行。如何找到Tomcat的PID並殺死它在python中?
我試圖寫一個簡單的Python腳本:
- 呼叫
shutdown.sh
- 奔跑
ps -aef | grep tomcat
找到與Tomcat的任何過程引用 - 如果適用,殺死與
kill -9 <PID>
這是我到目前爲止(作爲原型 - 我是嶄新的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()
我與中部掙扎 - 與獲得grep
結果,檢查,看看他們的大小大於1(因爲grep
總是回到自己的引用,至少1結果總是被退回, methinks),然後解析返回的PID並將其傳遞到killPidCmd
。提前致謝!
哇 - 偉大的答案,謝謝@Ionut Hulub(+1)!快速跟進 - 一旦我獲得了'pid',如何將它添加到'killPidCmd'?我可以使用'killPidCmd ='kill -9 $ pid'還是需要使用別的東西?再次感謝! – IAmYourFaja
我修改了代碼 –
不要忘記「kill -9」之後的空格:) – Sandro