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?
&
so attend que votre script shell (axis2server.sh) se termine $?
) 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:
stop
(dans votre script de service) ne fait rien? touch ~/temp.txt
est-il supposé créer /root/temp.txt
? (Je suppose que root exécute ce script.) axis2server.sh
et coller stderr
et stdout
?