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. 提前致谢!