Crontab - Ejecutar en el directorio

170

Me gustaría establecer un trabajo para que se ejecute diariamente en el crontab raíz. Pero me gustaría que lo ejecute desde un directorio particular para que pueda encontrar todos los archivos que necesita, ya que la aplicación tiene un montón de rutas relativas.

De todos modos, ¿puedo decirle a crontab que se ejecute desde un directorio en particular?

usuario333746
fuente

Respuestas:

318

Todos los trabajos son ejecutados por un shell, así que inicie ese fragmento de shell mediante un comando para cambiar el directorio.

cd /path/to/directory && ./bin/myapp

Con respecto al uso de en &&lugar de ;: normalmente no hace una diferencia, pero si el cdcomando falla (por ejemplo, porque el directorio no existe) con &&la aplicación no se ejecuta, mientras que con ;se ejecuta (pero no en el directorio previsto) )

Gilles 'SO- deja de ser malvado'
fuente
En lugar de agregar una respuesta principalmente duplicada, permítanme agregar que puede elegir qué shell (si necesita bash en lugar de sh, por ejemplo) configurando SHELLsu crontab.
Edd Steel el
12
+1. La solución de cualquier otra pregunta relacionada es volver a escribir el script con rutas absolutas. esto es exactamente lo que necesitaba
Conrad
2
Por curiosidad, ¿podrías usar un punto y coma en ;lugar de los dobles símbolos &&o eso no funcionaría? ¿Y por qué?
Joshua Pinter el
32
@JoshPinter Normalmente no hace la diferencia. Pero si el cdcomando falla (por ejemplo, porque el directorio no existe), con &&, la aplicación no se ejecuta. Con ;, se ejecuta (pero no en el directorio previsto).
Gilles 'SO- deja de ser malvado'
1
Haré esto a todos los trabajos cron de mis aplicaciones, me salvó de cambiar mis archivos fuente, muchas gracias
Contador م