- PR -

Tomcatとシェルに関して

投稿者投稿内容
lion
会議室デビュー日: 2004/01/15
投稿数: 6
投稿日時: 2004-01-15 18:27
初めまして、linux歴3ヶ月の初心者です。
何かと不備はあるかもしれませんが
ご指導ください。

今回、毎日午前2時にtomcatを再起動するという
プログラムを作成することとなりました。
そのため、tomcatを自動起動するシェルを作成し、
クローンで毎晩下のプログラムを呼び出しているのですが、
どうもうまくいきません。

現象としては、tomcatのほうは起動しているのですが、
起動していないというメールが届いてしまいます。
どうやら、自動起動スクリプトを呼び出した場合に
/var/run/tomcat.pid が存在しないようなのです。

tomcatが起動しているかを確認するために
一番簡単な方法はhttp://localhost:8080に接続することだと思いますが、
linux上で確認できる方法は無いかとしらべたのですが
他に何か良い方法はあるのでしょうか?

------------------------------------------------------------------
#!/bin/sh
#
# 名前:tomcat_restart.sh
#
# backupログの保存場所(expback.shの動作確認ログ)
# /opt/ora920/aaa_backup/backup.log
# exportしたファイル保存場所
# /data/exp_dmp/XXXXXXXXexport.dmp(年月日の8桁が先頭文字列)
# export時のログ保存場所
# /data/exp_log/XXXXXXXXexport.log(年月日の8桁が先頭文字列)

export TOMCAT_HOME=/usr/local/tomcat
export BACKUP_LOG=$TOMCAT_HOME/logs/backlogs/rotate.log
export CATALINA_LOG=$TOMCAT_HOME/logs/catalina.out
export BACKUP_DIR=$TOMCAT_HOME/logs/backlogs
export BACKUP_DIR=$TOMCAT_HOME/logs/backlogs
export CATALINA_PID=/var/run/tomcat.pid

if [ -f $CATALINA_PID ] ; then
message='TOMCAT 終了'
TM=`date '+### %y/%m/%d %H:%M:%S:'`
echo $TM $message >> $BACKUP_LOG

$TOMCAT_HOME/bin/shutdown.sh
else
TM=`date '+### %y/%m/%d %H:%M:%S:'`
message="TOMCATが起動していませんでした。ログを調べてください。"
echo $TM $message > /tmp/tmp.mail
echo $TM $message >> $BACKUP_LOG
mail *****@****.co.jp < "/tmp/tmp.mail"
fi

message='ログ退避'
TM=`date '+### %y/%m/%d %H:%M:%S:'`
echo $TM $message >> $BACKUP_LOG
set `date +%Y%m%d`
mv $CATALINA_LOG $BACKUP_DIR/$1catalina.out
touch $CATALINA_LOG
touch $CATALINA_LOG

message='TOMCAT 起動'
TM=`date '+### %y/%m/%d %H:%M:%S:'`
echo $TM $message >> $BACKUP_LOG

$TOMCAT_HOME/bin/startup.sh

# 1週間経過したエクスポートファイル及びログの削除
#find $DMP_FILE \( -name '*.dmp' \) -mtime +6 -exec rm -f {} \;
#find $EXP_LOG \( -name '*.log' \) -mtime +6 -exec rm -f {} \;

#message='1週間経過したエクスポートファイル及びログ削除完了'
#TM=`date '+### %y/%m/%d %H:%M:%S:'`
#echo $TM $message >> $BACKUP_LOG

if [ -f $CATALINA_PID ] ; then
message='TOMCAT 起動確認'
TM=`date '+### %y/%m/%d %H:%M:%S:'`
echo $TM $message >> $BACKUP_LOG
else
TM=`date '+### %y/%m/%d %H:%M:%S:'`
message="TOMCATを起動できませんでした。"
echo $TM $message > /tmp/tmp.mail
echo $TM $message >> $BACKUP_LOG
mail *****@****.co.jp < "/tmp/tmp.mail"
fi

exit 0
------------------------------------------------------------------

最終的には
@tomcatの起動チェック → 起動していない場合はメールを管理者へ送信

A起動している、していないに関わらず再起動

B確認 → 起動していない場合はAに戻る

C起動が確認できた場合は終了。

D再起動を3回繰り返して失敗した場合はメールを管理者へ送信し終了

というプログラムを作ろうと思っています。

まだまだ勉強不足ですが、
よそしくお願いします。

t-wata
大ベテラン
会議室デビュー日: 2002/07/12
投稿数: 209
お住まい・勤務地: 東京
投稿日時: 2004-01-15 19:08
startup.shを実行してから、tomcat.pidが作成される前に、tomcat.pidの存在チェックをしているのでは?

$TOMCAT_HOME/bin/startup.sh
sleep 30 #30秒待つ

のようにすればよさそうな気がしますが。
ちいにぃ
大ベテラン
会議室デビュー日: 2002/05/28
投稿数: 244
投稿日時: 2004-01-15 21:43
以前同じようなことをしました。
そのときは、次のようにしましたと思います。
・netstat -a -n | grep 8080 の結果を調べる。
・wget で http://localhost:8080 にアクセスして、その結果をファイルに出力して、
 その内容をあらかじめ wgetで取っておいた結果と比べる。
m
会議室デビュー日: 2004/01/16
投稿数: 1
投稿日時: 2004-01-16 00:23
見当違いでしたらすいません。
ps -ef | grep tomcat
の出力で起動/失敗の確認をしたら如何でしょうか?

私は昔、apacheやOracleの起動確認はpsコマンドを使用していました。
lion
会議室デビュー日: 2004/01/15
投稿数: 6
投稿日時: 2004-01-16 09:11
皆さん返信ありがとうございます。

>t-wataさん
どうやら、クローンでtomcatを起動させた場合、
tomcat.pidが作成されないようなのです。
sleepさせる方法は、このシェルには必要なようですね。
参考にさせていただきます。

>ちいにぃさん
netstatは、まだ理解できてませんが、
wgetでJSPを保存する方法があるとは知りませんでした。
実際に確認しましたがこの方法なら確認できそうです。
jspファイルを比較する方法をこれから調べてみます。

>mさん
psコマンドは試そうとしたのですが、
シェルから確認する場合、複雑になるとのコトだったので
今回は見送ってしまいました。
技術不足ですみません。。。

皆さん本当にありがとうございました。
参考にさせていただきます。

この方法以外にも、オススメのやり方がある場合には
教えていただければと思います。
よろしくお願いします。
Keisuke
大ベテラン
会議室デビュー日: 2003/10/24
投稿数: 105
投稿日時: 2004-01-16 09:58
RedHat なら、
/etc/init.d/tomcat4 restart
lion
会議室デビュー日: 2004/01/15
投稿数: 6
投稿日時: 2004-01-16 10:05
引用:

Keisukeさんの書き込み (2004-01-16 09:58) より:
RedHat なら、
/etc/init.d/tomcat4 restart



再起動の方法はスクリプトを用意しているのですが、
起動状態の確認方法をシェルで探しています。

またよろしくお願いします。
lion
会議室デビュー日: 2004/01/15
投稿数: 6
投稿日時: 2004-01-16 11:02
追記します。

今のところ、
tomcat起動している場合にのみ
wget http://localhost:8080で
カレントディレクトリにindex.jspが作成されるのですが、
この状態でシェルからファイルが存在するかしないかを
確認したいと思います。

ここで疑問です。
wgetでindex.jspを保存することができますが、
保存先の指定などはできるのでしょうか?

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