Ajout d’un script de démarrage de service pour Amazon linux AMI

J’utilise une AMI Amazon Linux et y apporte des modifications personnalisées (ajout d’un serveur axis2, etc.) et l’enregistre en tant que nouvelle AMI. Maintenant, ce que je veux faire, c’est quand l’AMI démarre, lancez axis2server (ie.axis2server devrait démarrer automatiquement au démarrage de l’instance). Pour cela j’ai utilisé un script d’initialisation comme ci-dessous et j’ai exécuté la commande suivante:

chkconfig --add axisservice 

Mais lorsque je lance une nouvelle instance à partir de mon image, axis2server ne démarre pas.

Je dois juste exécuter le script /home/ec2-user/axis2-1.6.1/bin/axis2server.sh au démarrage. Est-ce que je manque quelque chose ici?

 #! /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 

J’ai également consulté https://help.ubuntu.com/community/CloudInit , qui fournit un mécanisme appelé User-Data Scripts, dans lequel un utilisateur peut exécuter un script lors du lancement du script.

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

C’est une option de ligne de commande et ce que je veux, c’est quelque chose comme quand je lance l’instance via l’interface utilisateur, le script doit être démarré. Par conséquent, je pense que l’option ci-dessus ne peut pas être utilisée dans mon cas. S’il vous plait corrigez moi si je me trompe.

Merci, H.

Je parie que l’environnement n’est pas défini (correctement). Cela signifie que je suppose que votre script shell essaie de démarrer un autre programme et qu’il est introuvable.

Donc, au début, j’ajusterais la partie de start de votre script (actuel):

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

Édité:

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

Alors qu’est-ce que j’ai fait?

  • Le script & so attend que votre script shell (axis2server.sh) se termine
  • vérifié le statut de retour ( $? ) de votre script shell

Débogage supplémentaire:

Ajoutez set -x à vos scripts pour activer le traçage et connectez à la fois stderr et stdout .

Des questions:

  1. Êtes-vous conscient que stop (dans votre script de service) ne fait rien?
  2. touch ~/temp.txt est-il supposé créer /root/temp.txt ? (Je suppose que root exécute ce script.)
  3. Si aucune de mes suggestions ne fonctionne, pouvez-vous partager axis2server.sh et coller stderr et stdout ?