私はPythonを初めて使用し、localhost
(Apache Tomcatによってホストされている)で実行されているJava Webアプリ(WARファイル)が実行されているかどうかを判断するモニターを作成しようとしています。私は以前に実行するスクリプトを考案しました:
ps -aef | grep myWebApp
そして、の結果を調べてgrep
、それらの結果にプロセスIDが戻ってきたかどうかを確認しました。
しかし、ホストOSはTomcatプロセスのみを認識し、TomcatがホストしているWebアプリは認識しないことがわかりました。次に、TomcatにターミナルからヒットできるCLIが付属しているかどうかを確認しようとしましたが、答えはノーのようです。
今、私は自分のWebアプリを使用するwget
か、あるいはurllib2
Webアプリをヒットさせ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
ここで何が起こっているのか(エラーは何ですか)について何か考えはありますか?また、そしてもっと重要なことに、私はこれを間違った方法で行っていますか?前もって感謝します!