我是 Python 的新手,正在尝试编写一个监视器来确定在localhost
(由 Apache Tomcat 托管)上运行的 Java Web 应用程序(WAR 文件)是否正在运行。我之前设计了一个运行脚本:
ps -aef | grep myWebApp
并检查结果grep
以查看是否有任何进程 ID 在这些结果中返回。
但事实证明,主机操作系统只能看到 Tomcat 进程,而不是 Tomcat 托管的任何 Web 应用程序。接下来,我尝试查看 Tomcat 是否带有我可以从终端访问的任何类型的 CLI,看起来答案是否定的。
现在,我正在考虑使用wget
甚至可能通过让它们命中并检查结果urllib2
来确定我的网络应用程序是否正在运行。http://localhost:8080/myWebApp
这是我最好的尝试wget
:
wgetCmd = "wget http://localhost:8080/myWebApp"
wgetResults = subprocess.check_output([wgetCmd], shell=True, stderr=subprocess.STDOUT)
for line in wgetResults.strip().split('\n'):
if 'failed' in line:
print "\nError: myWebApp is not running."
sys.exit()
我的想法是,如果 Web 应用程序没有运行,则wget
' 的输出应该始终在其中包含“失败”一词(至少,根据我的经验)。不幸的是,当我运行它时,我收到以下错误:
Traceback (most recent call last):
File "/home/myUser/mywebapp-mon.py", line 52, in <module>
main()
File "/home/myUser/mywebapp-mon.py", line 21, in main
wgetResults = subprocess.check_output([wgetCmd], shell=True, stderr=subprocess.STDOUT)
File "/usr/lib/python2.7/subprocess.py", line 544, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '['wget http://localhost:8080/myWebApp']' returned non-zero exit status 4
关于这里发生了什么(错误是什么)的任何想法?另外,更重要的是,我是不是走错了路?提前致谢!