Comando con símbolos de porcentaje que no se ejecutan en crontab

11

El siguiente crontab no funciona:

# TEST LINE DOES DOT RUN
*/1 * * * * /bin/echo 'test '`/bin/date +%Y-%m-%d` >> /tmp/test

También intenté comenzar con:

SHELL=/bin/bash

Actualización: pensé que los personajes de backtick `eran los villanos, pero como la respuesta a continuación aclara, ¡el porcentaje% fue el culpable!

lpanebr
fuente
Su línea de prueba se ejecutará solo una vez cada hora. Puede que no sea lo que pretendía probar.
user535733
no es el primero en el minuto? # mh dom mon dow command
lpanebr
Tienes razón ... cambié a * / 1 para que se ejecute cada minuto. El cron funciona bien. Hay algo con los comandos. Parece ser el/bin/date +%Y-%m-%d
lpanebr

Respuestas:

13

En /bin/date +%Y-%m-%d, debe escapar de cada uno %de \acuerdo con esta página de manual :

El campo "sexto" (el resto de la línea) especifica el comando que se ejecutará. Toda la parte del comando de la línea, hasta una nueva línea o un carácter%, será ejecutada por / bin / sh o por el shell especificado en la variable SHELL del cronfile. Los signos de porcentaje (%) en el comando, a menos que se escapen con una barra diagonal inversa (), se cambiarán a caracteres de nueva línea, y todos los datos después del primer% se enviarán al comando como entrada estándar.

DK Bose
fuente
2
¡Gracias! Editaré la pregunta para que se ajuste al problema real.
lpanebr