- PR -

Tomcatが起動しているか確認する

1
投稿者投稿内容
未記入
常連さん
会議室デビュー日: 2004/08/21
投稿数: 41
投稿日時: 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 ]
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2005-07-24 13:46
netstatやlsofなどでポートを確認してみはどうでしょうか。

netstat -a | grep 80
lsof -i:80

など。

起動してれば出力があるでしょうし、なければないと思います。

もしくはJDK1.5を使用しているのであれば、jpsというツールが
付属してますので、それで確認もできるかと思います。

jpsを叩くとjavaのプロセス一覧が出力されますので、tomcat
だったら、「2574 Bootstrap」などの出力が得られると思います。
未記入
常連さん
会議室デビュー日: 2004/08/21
投稿数: 41
投稿日時: 2005-07-24 14:06
ご返答ありがとうございます。
lsof -i:8080
を実行してみるとTomcatが動いているときはそのプロセスが表示され、止まっているときは表示されませんのでこれでいけそうです。
ですが、プロセスが表示されたら起動処理を実行しないで表示されなかったら起動処理を実行するといった方法が分かりません。
漠然とif文で処理するのかなとは思うのですがご教授お願いします。
またメモリの関係でj2sdk1.4を使用していますのでjpsは使えません。


[ メッセージ編集済み 編集者: matsu_on 編集日時 2005-07-24 14:23 ]
未記入
常連さん
会議室デビュー日: 2004/08/21
投稿数: 41
投稿日時: 2005-07-26 11:15
ご返答無い様ですがlsof -i:ポート名でプロセス名が表示されたら実行しないで表示されなかったら実行するなどif文でできるのでしょうか?
せん
ぬし
会議室デビュー日: 2002/03/04
投稿数: 397
投稿日時: 2005-07-26 11:42
引用:

matsu_onさんの書き込み (2005-07-26 11:15) より:
ご返答無い様ですがlsof -i:ポート名でプロセス名が表示されたら実行しないで表示されなかったら実行するなどif文でできるのでしょうか?



はい。できます。

「シェルスクリプト」で検索すれば期待する機能をみたすために必要な事柄は
でてくるとおもいますが?
未記入
常連さん
会議室デビュー日: 2004/08/21
投稿数: 41
投稿日時: 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

スキルアップ/キャリアアップ(JOB@IT)