2011-12-05 7 views
6

Estoy usando un AMI de Amazon Linux y estoy haciendo algunas modificaciones personalizadas (agregué un servidor axis2, etc.) y lo guardo como un nuevo AMI. Ahora lo que quiero hacer es cuando el AMI se inicie, inicie axis2server (es decir, el servidor axis2 debe iniciarse automáticamente cuando se inicie la instancia). Para que he usado un script de inicio como el de abajo y encontré el siguiente comando:Agregando un script de inicio de servicio para Amazon linux AMI

chkconfig --add axisservice 

Pero cuando inicio una nueva instancia de mi imagen, no es empezar la axis2server.

Solo necesito ejecutar el script /home/ec2-user/axis2-1.6.1/bin/axis2server.sh al inicio. ¿Me estoy perdiendo algo aquí?

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

Fui a través https://help.ubuntu.com/community/CloudInit, así y proporciona un mecanismo llamado Scripts de datos de usuario, donde un usuario puede ejecutar una secuencia de comandos al iniciar la secuencia de comandos.

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

Ésta es una opción de línea de comandos y lo que quiero es algo así como cuando inicio la instancia a través de la interfaz de usuario, el script debe ser started.Therefore, creo que la opción anterior no se puede utilizar en mi caso. Por favor, corríjame si estoy equivocado.

Gracias, H.

+0

Solo para verificar los conceptos básicos, ¿el script tiene los permisos correctos para ejecutarse al inicio? ¿Has intentado ejecutarlo manualmente? – David

+0

¿Has encontrado una solución? También quiero ejecutar un servidor Redis y un node.js cuando se reinicie mi instancia. Parece que Amazon AMI no tiene update-rc.d instalado aquí. – user482594

Respuesta

3

apuesto a que el sistema no está configurado (correctamente). Esto significa que supongo que su script de shell intenta iniciar otro programa y no se encuentra.

Así que en primer lugar, me ajustar la parte start de su script (actual):

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

Editado:

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

Entonces, ¿qué he hecho?

  • eliminado & modo script espera para su script de shell (axis2server.sh) para completar
  • comprueba el estado de retorno ($?) de su secuencia de comandos shell

Además depuración:

Agregar set -x a las secuencias de comandos para habilitar el seguimiento y el registro stderr y stdout.

Preguntas:

  1. es que usted está consciente de que stop (en el script de servicio) no hace nada?
  2. touch ~/temp.txt se supone que crea /root/temp.txt? (Estoy adivinando cordones de raíz este script.)
  3. Si ninguna de mis sugerencias funciona, se puede compartir axis2server.sh y pegar stderr y stdout?
Cuestiones relacionadas