shutdown.sh
通常,通过运行其脚本(或批处理文件)来关闭 Apache Tomcat 。在某些情况下,例如当 Tomcat 的 Web 容器托管一个使用多线程执行一些疯狂操作的 Web 应用程序时,shutdown.sh
优雅地运行会关闭Tomcat 的某些部分(因为我可以看到更多可用内存返回到系统),但是 Tomcat进程继续运行。
我正在尝试编写一个简单的 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 个结果,我认为),然后解析返回的PID 并将其传递到killPidCmd
. 提前致谢!