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!


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.


2
¡Gracias! Editaré la pregunta para que se ajuste al problema real.
lpanebr
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.