- - PR -
Tomcatとシェルに関して
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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回繰り返して失敗した場合はメールを管理者へ送信し終了 というプログラムを作ろうと思っています。 まだまだ勉強不足ですが、 よそしくお願いします。 | ||||
|
投稿日時: 2004-01-15 19:08
startup.shを実行してから、tomcat.pidが作成される前に、tomcat.pidの存在チェックをしているのでは?
$TOMCAT_HOME/bin/startup.sh sleep 30 #30秒待つ のようにすればよさそうな気がしますが。 | ||||
|
投稿日時: 2004-01-15 21:43
以前同じようなことをしました。
そのときは、次のようにしましたと思います。 ・netstat -a -n | grep 8080 の結果を調べる。 ・wget で http://localhost:8080 にアクセスして、その結果をファイルに出力して、 その内容をあらかじめ wgetで取っておいた結果と比べる。 | ||||
|
投稿日時: 2004-01-16 00:23
見当違いでしたらすいません。
ps -ef | grep tomcat の出力で起動/失敗の確認をしたら如何でしょうか? 私は昔、apacheやOracleの起動確認はpsコマンドを使用していました。 | ||||
|
投稿日時: 2004-01-16 09:11
皆さん返信ありがとうございます。
>t-wataさん どうやら、クローンでtomcatを起動させた場合、 tomcat.pidが作成されないようなのです。 sleepさせる方法は、このシェルには必要なようですね。 参考にさせていただきます。 >ちいにぃさん netstatは、まだ理解できてませんが、 wgetでJSPを保存する方法があるとは知りませんでした。 実際に確認しましたがこの方法なら確認できそうです。 jspファイルを比較する方法をこれから調べてみます。 >mさん psコマンドは試そうとしたのですが、 シェルから確認する場合、複雑になるとのコトだったので 今回は見送ってしまいました。 技術不足ですみません。。。 皆さん本当にありがとうございました。 参考にさせていただきます。 この方法以外にも、オススメのやり方がある場合には 教えていただければと思います。 よろしくお願いします。 | ||||
|
投稿日時: 2004-01-16 09:58
RedHat なら、
/etc/init.d/tomcat4 restart | ||||
|
投稿日時: 2004-01-16 10:05
再起動の方法はスクリプトを用意しているのですが、 起動状態の確認方法をシェルで探しています。 またよろしくお願いします。 | ||||
|
投稿日時: 2004-01-16 11:02
追記します。
今のところ、 tomcat起動している場合にのみ wget http://localhost:8080で カレントディレクトリにindex.jspが作成されるのですが、 この状態でシェルからファイルが存在するかしないかを 確認したいと思います。 ここで疑問です。 wgetでindex.jspを保存することができますが、 保存先の指定などはできるのでしょうか? |
1|2|3
次のページへ»