Quiero crear un archivo de registro para un script cron que tenga la hora actual en el nombre del archivo de registro. Este es el comando que intenté usar:
0 * * * * echo hello >> ~/cron-logs/hourly/test`date "+%d"`.log
Lamentablemente recibo este mensaje cuando se ejecuta:
/bin/sh: -c: line 0: unexpected EOF while looking for matching ``'
/bin/sh: -c: line 1: syntax error: unexpected end of file
He intentado escapar de la dateparte de varias maneras, pero sin mucha suerte. ¿Es posible hacer que esto suceda en línea en un archivo crontab o necesito crear un script de shell para hacer esto?

date +\%Y\ \%m\ \%d\ \%H:\%M:\%S-cronlogTambién puede poner sus comandos en un archivo shell y luego ejecutar el archivo shell con cron.
jobs.sh
cron
fuente
Si desea hacer que la cadena de formato de fecha sea una variable (para evitar duplicar la cadena completa), NO escape
%y NO la coloque$()Por ejemplo, mientras declara la cadena, simplemente escriba:
Luego, escribe una declaración cron con
$($VARIABLE_NAME)este:Gracias a cyberx86 , su respuesta en ServerFault podría estar más completa:
fuente
En cron, puede usar esta sintaxis simple:
fuente
-dopción, que no se usa en la pregunta (y no la explicó). ¿Cómo justifica llamar a esta "sintaxis simple"?Todas las respuestas anteriores usan comillas dobles (no todas funcionaron para mi configuración). Esto funcionó para mí:
fuente
Una solución básica:
$()para ejecutardatecomandos y devolver resultados%personaje con\2>&1al final de la transmisión de ambosstdoutystderren ese archivo de registroEjemplo:
Salida:
fuente