- - PR -
Tomcatが起動しているか確認する
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-07-24 10:48
こんにちは。
Linux初心者matsu_onです。 今Tomcatを運用してましてTomcatが落ちたままになってしまわないように15分おきに Tomcatのstartup.shをcronでたたいています。既に起動していればエラーが出て2重起動されないですし落ちていれば起動するようになっていると思います。 ですが既に起動しているとエラーが出ているのがいやなのでcronで既にTomcatのコマンドプロセスが起動しているか、又はポートが使われているかどうか調べて落ちていたらstartup.shをたたくというふうにしたいです。具体的にはどう書けば良いのでしょうか? [ メッセージ編集済み 編集者: matsu_on 編集日時 2005-07-24 12:14 ] | ||||
|
投稿日時: 2005-07-24 13:46
netstatやlsofなどでポートを確認してみはどうでしょうか。
netstat -a | grep 80 lsof -i:80 など。 起動してれば出力があるでしょうし、なければないと思います。 もしくはJDK1.5を使用しているのであれば、jpsというツールが 付属してますので、それで確認もできるかと思います。 jpsを叩くとjavaのプロセス一覧が出力されますので、tomcat だったら、「2574 Bootstrap」などの出力が得られると思います。 | ||||
|
投稿日時: 2005-07-24 14:06
ご返答ありがとうございます。
lsof -i:8080 を実行してみるとTomcatが動いているときはそのプロセスが表示され、止まっているときは表示されませんのでこれでいけそうです。 ですが、プロセスが表示されたら起動処理を実行しないで表示されなかったら起動処理を実行するといった方法が分かりません。 漠然とif文で処理するのかなとは思うのですがご教授お願いします。 またメモリの関係でj2sdk1.4を使用していますのでjpsは使えません。 [ メッセージ編集済み 編集者: matsu_on 編集日時 2005-07-24 14:23 ] | ||||
|
投稿日時: 2005-07-26 11:15
ご返答無い様ですがlsof -i:ポート名でプロセス名が表示されたら実行しないで表示されなかったら実行するなどif文でできるのでしょうか?
| ||||
|
投稿日時: 2005-07-26 11:42
はい。できます。 「シェルスクリプト」で検索すれば期待する機能をみたすために必要な事柄は でてくるとおもいますが? | ||||
|
投稿日時: 2005-07-26 13:18
if文の条件にコマンド指定するだけでできました。コマンドシェルって便利ですね。
Apacheと連携するのでポート8080ではなくTomcatがshutdown用に使っている8005を 指定しました。 #!/bin/sh if lsof -i:8005; then if lsof -i:80; then else /etc/rc.d/init.d/httpd start fi else if lsof -i:80; then /etc/rc.d/init.d/tomcat start else /etc/rc.d/init.d/tomcat start /etc/rc.d/init.d/httpd start fi fi |
1