Esto está en Ubuntu 10.04 LTS
Tengo un script gulp (que se ejecuta a través de Node) que funciona muy bien cuando lo ejecuto manualmente. En realidad, ejecuta una "vigilancia" en un directorio de modo que, si alguno de los archivos cambia, ejecuta automáticamente un comando. El problema inicial que tuve fue que si guardo un cambio que tiene un error, el "reloj" falla.
Pensé que podría solucionar este problema ejecutando el script gulp a través del inicio y reapareciendo si falla. Pero cuando ejecuto "start gulpwatch" o incluso "sudo start gulpwatch", dice que se inicia y me da un pid, pero en realidad simplemente se inicia, falla y no mantiene la "vigilancia". Esto se confirma en el syslog donde veo las líneas:
Mar 24 14:19:19 ubuntu init: gulpwatch main process (2653) terminated with status 2
2072 Mar 24 14:19:19 ubuntu init: gulpwatch main process ended, respawning
2073 Mar 24 14:19:19 ubuntu init: gulpwatch main process (2654) terminated with status 2
2074 Mar 24 14:19:19 ubuntu init: gulpwatch main process ended, respawning
2075 Mar 24 14:19:19 ubuntu init: gulpwatch main process (2655) terminated with status 2
2076 Mar 24 14:19:19 ubuntu init: gulpwatch main process ended, respawning
2077 Mar 24 14:19:19 ubuntu init: gulpwatch main process (2656) terminated with status 2
2078 Mar 24 14:19:19 ubuntu init: gulpwatch main process ended, respawning
2079 Mar 24 14:19:19 ubuntu init: gulpwatch main process (2657) terminated with status 2
2080 Mar 24 14:19:19 ubuntu init: gulpwatch main process ended, respawning
2081 Mar 24 14:19:19 ubuntu init: gulpwatch main process (2658) terminated with status 2
Aquí está mi archivo advenedizo.
/etc/init/gulpwatch.conf
start on runlevel [2345]
stop on runlevel [016]
respawn
respawn limit 5 10
exec "cd /opt/lib/vendor/node/;/usr/bin/gulp --gulpfile gulpfile.js"
Cuando ejecuto los dos comandos enumerados anteriormente "cd /opt/lib/vendor/node/" y "/usr/bin/gulp --gulpfile gulpfile.js", funciona perfectamente (pero, por supuesto, no volverá a expandirse si falla debido a un error de sintaxis en el archivo de observación).
¿Alguna idea de por qué mi script inicial no funciona?
Respuesta1
Me lo imaginé. Necesitaba ejecutar chdir /opt/lib/vendor/node/
y luego eliminar esa parte de la exec
declaración. Aparentemente exec
no ejecuta ningún comando de shell antiguo, solo ejecuta scripts (y argumentos)
Respuesta2
Tienes que intentar ejecutar la línea antes de ejecutarla a través del script de inicio. Me refiero a esta línea:
cd /opt/lib/vendor/node/;/usr/bin/gulp --gulpfile gulpfile.js
¿Qué obtuviste cuando lo ejecutaste en el servidor? Si obtiene un error en lugar de un éxito, resuélvalo primero.