2011-12-05 80 views
6

我正在使用亞馬遜Linux AMI並對其進行一些自定義修改(添加了axis2server等)並將其另存爲新的AMI。現在我想要做的是當AMI啓動時,啓動axis2server(ie.axis2server應該在實例啓動時自動啓動)。對於我使用的初始化腳本像下面跑到下面的命令:爲亞馬遜linux添加服務啓動腳本AMI

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。亞馬遜AMI似乎沒有在這裏安裝update-rc.d。 – user482594

回答

3

我敢打賭,環境還沒有設置(正確)。這意味着我在猜測你的shell腳本試圖啓動另一個程序,但它不被發現。

所以剛開始,我會調整你的腳本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 "." 

所以我做了什麼?

  • 去除&所以腳本等待你的shell腳本(axis2server.sh)完成
  • 檢查你的shell腳本

進一步調試的返回狀態($?):

添加set -x添加到您的腳本以啓用跟蹤並記錄stderrstdout

問題:

  1. 你都知道,stop(在你的服務腳本)不會做任何事情?
  2. touch ~/temp.txt是應該創建/root/temp.txt? (我是猜測 root運行這個腳本。)
  3. 如果我的建議沒有任何工作,你能分享axis2server.sh和粘貼stderrstdout