¿Cómo puedo almacenar variables en mi crontab? Me doy cuenta de que no es shell, pero digo que quiero tener algunas constantes como una ruta a mi aplicación o algo así.Variables en crontab?
¿Pensamientos?
¿Cómo puedo almacenar variables en mi crontab? Me doy cuenta de que no es shell, pero digo que quiero tener algunas constantes como una ruta a mi aplicación o algo así.Variables en crontab?
¿Pensamientos?
En Vixie cron, que es posiblemente el más común, puede hacer esto casi exactamente como un script de shell.
VARIABLE=value
PATH=/bin:/path/to/doathing
0 0 * * * doathing.sh $VARIABLE
La página del manual dice:
una línea activa en un crontab será o bien un ajuste del entorno o un comando cron. Una configuración del entorno es de la forma,
name = value
donde los espacios alrededor del signo igual (=) son opcionales, y los espacios no conducen posteriores en el valor será parte del valor asignado a nombre. La cadena de valor se puede colocar entre comillas (simple o doble, pero coincidente) para conservar los espacios en blanco iniciales o finales. La cadena de caracteres también se puede colocar entre comillas (simple o doble, pero a juego) para conservar los espacios en blanco iniciales, finales o posteriores.
Puede ver si tiene Vixie cron consultando la página de manual de crontab
; el autor será Paul Vixie. Diferentes crones pueden o no soportar esto (el cron de BusyBox, por ejemplo, no), en cuyo caso su mejor opción es envolver su comando en un script de shell y ejecutar ese script desde cron en su lugar. De hecho, esto es algo bueno que hacer para cualquier cosa complicada.
No soy un tipo unix, así que no puedo decir nada definitivo, pero este parece ser un buen lugar para un paso previo al procesado.
#define cmdpath /usr/bin/myfolder/cmd
0,30 8-17 * * 1-5 cmdpath
17 3 * * 1 cmdpath
corriendo a través de mi C++ preprocesador del compilador da como:
0,30 8-17 * * 1-5 /usr/bin/myfolder/cmd
17 3 * * 1 /usr/bin/myfolder/cmd
que parece justo lo que quería.
Cuando todo lo que tiene es un martillo, cada problema parece un clavo. –
Eso convierte el proceso relativamente fácil de editar un crontab con 'crontab -e' en un proceso de tres pasos para editar su crontab, invocar cpp e instalar el nuevo crontab con crontab $ filename – mkb
@Matt: a) eso es lo que son los guiones de shell para yb) pero 'crontab -e' no hace lo que quiere, por lo que no es realmente una respuesta. –
Puede poner variables de entorno en el crontab. Consulte la página del manual para crontab(5)
para obtener más detalles.
+1 Esa es la respuesta –
Regresé para ver esta pregunta que hice hace 3 años. Es curioso cómo van las cosas, ¿eh? –
Esta publicación es engañosa: cron solo admite un conjunto específico de variables que se establecen en la tabla cron; p.ej. INICIO, MAILTO, SHELL, etc. Usted * no puede * establecer variables personalizadas, p. FOO =/foo/dir. Pensé que publicaría esto ya que este mensaje me llevó por el camino equivocado durante un par de horas. – Jmoney38