2011-12-05 4 views
6

私はAmazon Linux AMIを使用していて、いくつかのカスタム修正(axis2serverの追加など)を行い、新しいAMIとして保存しています。今私がしたいのは、AMIが起動し、axis2serverを起動するときです(インスタンスが起動すると自動的にaxis2serverが起動するはずです)。そのために私は以下のようにinitスクリプトを使用し、次のコマンドを実行しました:Amazon linux用のサービス起動スクリプトの追加AY

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を通じてインスタンスを起動すると、スクリプトはstarted.Thereforeあるべきようなもので、私は上記のオプションは、私の場合には使用することはできないと思います。私が間違っていれば私を修正してください。

おかげで、 H.

+0

非常に基本的な点を確認するだけで、起動時にスクリプトを実行するための適切な権限がありますか?手動で実行しようとしましたか? – David

+0

解決策は見つかりましたか?また、インスタンスが再起動したときにRedisサーバーとnode.jsを実行したいAmazon AMIにはupdate-rc.dがインストールされていないようです。 – user482594

答えて

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をスクリプトに適用してトレースを有効にし、stderrstdoutの両方をログに記録します。

質問:

  1. あなたは(あなたのサービスのスクリプト内)stopは何もしないことを知っていますか?
  2. touch ~/temp.txtは、/root/temp.txtを作成するはずですか? (私はこのスクリプトルートの実行を推測している。)
  3. 私の提案のどれも動作しない場合は、axis2server.shを共有し、stderrstdoutを貼り付けることができますか?
関連する問題