7

私は Amazon Linux AMI を使用しており、いくつかのカスタム変更 (axis2server の追加など) を行って、新しい AMI として保存しています。ここで私がやりたいことは、AMI の起動時に axis2server を起動することです (つまり、インスタンスの起動時に axis2server が自動的に起動するはずです)。そのために、以下のような init スクリプトを使用し、次のコマンドを実行しました。

chkconfig --add axisservice

しかし、イメージから新しいインスタンスを起動すると、axis2server が起動しません。

起動時にスクリプト /home/ec2-user/axis2-1.6.1/bin/axis2server.sh を実行するだけです。ここで何か不足していますか?

#! /bin/sh
# Basic support for IRIX style chkconfig
###
# chkconfig: 235 98 55
# description: Manages the services you are controlling with the chkconfig command
###

case "$1" in
  start)
        echo -n "Starting axisservice"        
        touch ~/temp.txt
        cd /home/ec2-user/axis2-1.6.1/bin
        ./axis2server.sh &
        echo "."
        ;;
  stop)
        echo -n "Stopping axisservice"
        echo "."
        ;;

  *)
        echo "Usage: /sbin/service axisservice {start|stop}"
        exit 1
esac

exit 0

https://help.ubuntu.com/community/CloudInitも調べましたが、ユーザーデータスクリプトと呼ばれるメカニズムが提供され、ユーザーはスクリプトの起動時にスクリプトを実行できます。

$ euca-run-instances --key mykey --user-data-file myscript.sh ami-axxxx

これはコマンド ライン オプションであり、UI を介してインスタンスを起動すると、スクリプトが開始されるようにする必要があるため、上記のオプションは私の場合は使用できないと思います。間違っている場合は修正してください。

ありがとう、H.

4

1 に答える 1

3

環境が設定されていない(正しく設定されていない)に違いありません。これは、あなたのシェル スクリプトが別のプログラムを起動しようとしていると推測しているのですが、それが見つからないことを意味します。

最初に、startスクリプトの一部を調整します(現在):

echo -n "Starting axisservice"        
touch ~/temp.txt
cd /home/ec2-user/axis2-1.6.1/bin
./axis2server.sh &
echo "."

編集:

echo -n "Starting axisservice"        
touch ~/temp.txt
cd /home/ec2-user/axis2-1.6.1/bin
./axis2server.sh
RETVAL=$?
[ $RETVAL -eq 0 ] && echo Success
[ $RETVAL -ne 0 ] && echo Failure
echo "."

それで、私は何をしましたか?

  • &シェル スクリプト (axis2server.sh) が完了するまでスクリプトが待機するように削除されました
  • $?シェル スクリプトのリターン ステータス ( ) を確認しました

さらなるデバッグ:

スクリプトに追加set -xして、トレースを有効にし、 と の両方をログに記録しstderrますstdout

質問:

  1. stop(サービススクリプトで)何もしないことに気づいていますか?
  2. touch ~/temp.txtそれは作成することになっています/root/temp.txtか?(root がこのスクリプトを実行していると思います。)
  3. 私の提案がどれもうまくいかない場合は、共有axis2server.shして貼り付けstderrてもらえますstdoutか?
于 2012-05-24T21:53:24.560 に答える