2011-12-05 12 views
6

के लिए एक सेवा स्टार्टअप स्क्रिप्ट जोड़ना मैं एक अमेज़ॅन लिनक्स एएमआई का उपयोग कर रहा हूं और कुछ कस्टम संशोधन कर रहा हूं (इसमें अक्ष 2 सर्वर, आदि जोड़ा गया है) और इसे एक नई एएमआई के रूप में सहेज रहा है। अब मैं क्या करना चाहता हूं जब एएमआई बूट हो जाता है, अक्ष 2 सर्वर शुरू करें (यानी मैक्सिस 2 सर्वर स्वचालित रूप से प्रारंभ होने पर प्रारंभ होना चाहिए)। कि मैं नीचे की तरह एक init स्क्रिप्ट का इस्तेमाल किया और निम्न आदेश भागा:अमेज़ॅन लिनक्स 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 

यह एक कमांड लाइन विकल्प है और क्या मैं चाहता हूँ जब मैं यूआई के माध्यम से उदाहरण के शुभारंभ की तरह कुछ है, स्क्रिप्ट started.Therefore होना चाहिए, मैं ऊपर विकल्प मेरे मामले में नहीं किया जा सकता है। अगर मैं गलत हूं कृपया मुझे सही।

धन्यवाद, एच

+0

बस मूल बातें देखने के लिए, क्या स्क्रिप्ट में स्टार्टअप पर चलाने की सही अनुमतियां हैं? क्या आपने इसे मैन्युअल रूप से चलाने की कोशिश की है? – David

+0

क्या आपको कोई समाधान मिला है? जब मेरा इंस्टेंस पुनरारंभ होता है तो मैं एक Redis सर्वर और node.js भी चला सकता हूं। ऐसा लगता है कि अमेज़ॅन एएमआई में यहां अपडेट-आरसीडी स्थापित नहीं है। – user482594

उत्तर

3

मुझे यकीन है पर्यावरण सेट नहीं है (सही ढंग से)। इसका मतलब है कि मैं अनुमान लगा रहा हूं कि आपकी खोल स्क्रिप्ट एक और प्रोग्राम शुरू करने का प्रयास करती है और यह नहीं मिलती है।

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 "." 

तो मैं क्या किया

तो पहली बार में, मैं अपनी स्क्रिप्ट की start हिस्सा (वर्तमान) को समायोजित होगा?

  • हटाया & तो स्क्रिप्ट
  • अपने खोल स्क्रिप्ट

इसके अलावा डिबगिंग की वापसी स्थिति ($?) जाँच पूरा करने के लिए अपने खोल स्क्रिप्ट (axis2server.sh) के लिए इंतजार कर रहा है:

जोड़ें set -x आपकी स्क्रिप्ट पर ट्रेसिंग सक्षम करने और stderr और stdout दोनों को लॉग इन करने के लिए लॉग इन करें।

सवाल:

  1. आप जानते हैं कि stop (आपकी सेवा लिपि में) कुछ नहीं करता हैं?
  2. touch ~/temp.txt क्या /root/temp.txt बनाना है? (मैं जड़ रन इस स्क्रिप्ट अनुमान लगा रहा हूँ।)
  3. मेरे सुझाव से कोई भी काम हैं, तो आप axis2server.sh साझा करते हैं और stderr और stdout पेस्ट कर सकते हैं?
संबंधित मुद्दे