- - PR -
Tomcatとシェルに関して
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-01-16 12:53
妙な技巧をこらすよりも、tomcat.pid が作られるようにアカウントやパーミッションを検討するのが良いと思いますよ。
| ||||||||
|
投稿日時: 2004-01-16 13:50
こんにちわっ! 遊々です。
RedHatの起動スクリプトを見ると以下のようになっております。 ------------------スクリプト抜粋-------------------------- # Path to the tomcat launch script (direct don't use wrapper) TOMCAT_SCRIPT=/usr/bin/dtomcat4 # Tomcat name TOMCAT_PROG=tomcat4 RETVAL=0 # See how we were called. start() { echo -n "Starting $TOMCAT_PROG: " if [ -x /etc/rc.d/init.d/functions ]; then daemon --user $TOMCAT_USER $TOMCAT_SCRIPT start else su - $TOMCAT_USER -c "$TOMCAT_SCRIPT start" fi RETVAL=$? echo [ $RETVAL = 0 ] && touch /var/lock/subsys/tomcat4 return $RETVAL } ------------------スクリプト抜粋-------------------------- そんなわけで、この場合は「$RETVAL」の値をみてあげれば良さそうですけどいかがでしょうか?(「/usr/bin/dtomcat4」があればですが…^^;) >>psコマンドは試そうとしたのですが、 >>シェルから確認する場合、複雑になるとのコトだったので >>今回は見送ってしまいました。 ps -ax | grep tomcat > tomcatid.txt とかやってファイルを作って、ファイルサイズが0以上かどうかをチェック(「-s」でしたっけ?^^:)してあげれば良さそうですね。たぶん、思っているより難しくないと思いますよ(笑) [ メッセージ編集済み 編集者: 水無月 遊々 編集日時 2004-01-16 14:19 ] | ||||||||
|
投稿日時: 2004-01-16 23:44
それはまずいです。 一度試したくらいだと期待通りの動作をしているようにみえるかも しれませんが、何度もテストしているとうまく行ってないことに 気づくでしょう。 Keisukeさんが書かれているように > 妙な技巧をこらすよりも、tomcat.pid が作られるようにアカウントや > パーミッションを検討するのが良いと思いますよ。 というのが本筋と思います。 ちいにぃさんが書かれているやり方でもいいと思いますが。 | ||||||||
|
投稿日時: 2004-01-17 14:11
こんにちわっ! ゆうゆうです。
すいません。どこら辺が悪いのかわかりませんでした^^; サンプルを作成して(30分ぐらいかな)テストしたのですが…。 (一応、成功20回,失敗20回の合計40回ほどテストしました) お教えいただければありがたく思いますm(..)m --------------------以下、サンプルコード----------------------- #!/bin/sh TIME=0 #経過時間 SLEEP_TIME=1 #チェックする間隔(s) TIMEOUT=10 #タイムアウトまでの時間(s) APP=/usr/bin/gedit #アプリケーションの起動パス APPNAME=gedit #起動するアプリケーション名(grepで検索) PSLIST=/tmp/pslist.txt #psとgrepコマンドで出力されたファイルのリダイレクト #プログラムの起動 $(echo $APP) & #起動チェックルーチン while [ true ] ; do #リストの取得 ps -ax | grep -v grep | grep $APPNAME > $PSLIST #ファイルが出来たか? if [ -s $PSLIST ] ; then echo OK break else sleep $SLEEP_TIME fi #タイムアウトのチェック TIME=`expr $TIME + $SLEEP_TIME` if [ $TIME -gt $TIMEOUT ] ; then echo NG break fi done #作業ファイルの削除 rm $PSLIST --------------------以上、サンプルコード-----------------------
これは、確かに同意します。 | ||||||||
|
投稿日時: 2004-01-17 14:41
と、
とで違いがありますね。この違いがまずい結果を生みかねないことを 分かっているからこそ、後者のスクリプトにしたわけですよね。 いまの場合、netstat -a で判定できるのですから、grep を 二重にかけるより、そちらのほうがスマートかと。 ついでに、ファイルに出力するよりはパイプで wc -l にでも渡して その結果をシェル変数に入れるほうがすっきりしてるんじゃあ ないかと思います。そのシェル変数の内容によって、条件分岐する ようにしておく、と。 | ||||||||
|
投稿日時: 2004-01-17 15:06
こんにちわ。ゆうゆうです。
ああ、そういうことだったんですね。私的には「psをつかって、grepにて選別 → ファイルへという方向性で出来るのでは?」というのを示した(示したかった)つもりで、特に100%の回答を出したつもりはありませんでした^^; 実際、全くテストもしていませんでしたし^^;;; …なので、ご指摘を受けたときは私が論理的に不可能な方向性を提示したのかと思ってしまいました。解釈の行き違いだったんですね^^; 納得しました。
なるなる。参考になります。ありがとうございましたm(..)m | ||||||||
|
投稿日時: 2004-01-17 18:49
psの出力を利用することについて、1つだけ気になることがあります。
2003年5月に、Linux Users MLの「プロセスをスワップアウトさせない設定」と いうスレッドにて、プロセスがスワップアウトされるとpsの出力が変化する、 とあります。 http://search.luky.org/linux-users.9/thrd9.html#08887 よって、grep tomcat で検索できないこともありえるのかもしれません。 私自身はこの話題に関しては追試していませんが、これが気になったので 最初の書き込み時点ではpsの出力を利用する、という選択肢を外しました。 # ちょっと気になった話題だったので記憶に残っていたのですが、 # でも、最初の書き込みの時点ではこの話題がどこのメーリングリスト # に合ったかも忘れていたわけで。 | ||||||||
|
投稿日時: 2004-01-17 21:49
これは気づきませんでした。 てゆーか、カーネルのことはほとんど知らない>< LinuxカーネルにはU領域というものは無かったはずですが、 プロセスがスワップアウトするとカーネル側の情報も 主記憶からはある程度消されるということなんでしょうね。 さすがに、起動直後のプロセスがスワップアウトされることは ないとは思いますが。 |