
Tengo un script bash muy simple (run-build.sh):
cd /var/www/project
npm run build
Este script funciona bien cuando lo ejecuto desde la línea de comando pero quiero ejecutarlo cada 30 minutos mediante un trabajo cron:
*/30 * * * * /var/www/project/run-build.sh >> /var/www/test.log 2>&1
Que por alguna razón no funciona. Probé varios otros enfoques, como ejecutar el trabajo cron como usuario root o agregar la ruta al nodo como parte del trabajo cron. Sin embargo, todavía no he logrado encontrar una solución, por eso la publico aquí.
¿Alguien tiene alguna idea de cómo hacer que funcione este trabajo cron?
Respuesta1
Actualicé mi cronjob a:
* */12 * * * sudo -u user /var/www/project/run-build.sh >> /var/www/test.log 2>&1
y ahora funciona. Estoy seguro de que lo intenté antes, pero debí haber probado algo diferente.
Respuesta2
Tuve un problema similar. En mi caso, el problema se debió a que mi script .sh no tenía permisos de ejecución.
Compruebe si el archivo de script tiene permiso de ejecución ( x
marca) con ll
. Si no, algo como:
chmod 744 file
debería permitir que su usuario lo ejecute sin root.