Tengo un archivo "sh" que inicia un servidor de nodo.
Funciona bien si corro
sh /var/www/init_node.sh
Quiero que el script se ejecute cada vez que se reinicie mi instancia (para tener un servidor de nodo en funcionamiento).
Agregué el script a mi archivo /etc/rc.local de la siguiente manera:
sh /var/www/init_node.sh
exit 0
Sin embargo, cuando reinicio la instancia, el servidor nodejs no se está ejecutando. Es una instancia de Ubuntu 64.
Creo que no es importante, pero aquí está el contenido de mi archivo sh:
cd /var/www/myproject
eval `ssh-agent -s`
ssh-add -D
ssh-add ~/.ssh/id_rsa
git stash
git pull origin master --force
forever start express.js
También
sh /etc/rc.local
funciona bien
¿Algunas ideas?
Respuesta1
Tuve un problema similar con el archivo rc.local en una instancia de Amazon. Resultó que tenía un error con el script en rc.local que no permitía ejecutarlo a menos que tuviera un tty.
Entonces, ¿cómo puedo saber si recibo un error similar? Utilice cloud-init para ejecutar su script.
Para mi distribución de Amazon Linux, primero edité /etc/init.d/cloud-init-user-scripts
.
Cambiar esta línea
/usr/bin/cloud-init-run-module once-per-instance user-scripts execute run-parts ${SCRIPT_DIR} >/dev/null && success || failure
Para siempre"
/usr/bin/cloud-init-run-module always user-scripts execute run-parts ${SCRIPT_DIR} >/dev/null && success || failure
Luego cree un directorio mkdir /var/lib/cloud/data/scripts
. Ahora copie el script que desea ejecutar al iniciar /var/lib/cloud/data/scripts
. Asegúrese de que el bit ejecutable de sus scripts esté configurado.
Ahora debería poder ejecutar sudo /etc/init.d/cloud-init-user-scripts start
... Luego podrá verificar /var/log/cloud-init.log
si hay errores.