我是Python新手,正在嘗試編寫一個監視器來確定運行在localhost
(由Apache Tomcat託管)上的Java Web應用程序(WAR文件)是否正在運行。我早些時候曾設計了運行腳本:如何在Python中檢查wget/urllib2的結果?
ps -aef | grep myWebApp
並視察了grep
的結果,看是否有進程標識回來了這些結果。
但事實證明,主機操作系統只能看到Tomcat進程,而不是Tomcat託管的任何Web應用程序。我接下來試着看看Tomcat是否帶有任何可以從終端上點擊的CLI,而且看起來答案是否定的。現在
,我通過讓他們打http://localhost:8080/myWebApp
並檢查結果考慮使用wget
或者甚至urllib2
確定我的web應用程序正在運行的。這是我與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
任何想到這裏發生了什麼(錯誤是什麼)?另外,更重要的是,我是否以錯誤的方式去做這件事?提前致謝!
謝謝@ J.F。塞巴斯蒂安 - 最終,你的方式更快,更簡單,而且它的工作「開箱即用」,可以這麼說。再次感謝! – IAmYourFaja