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 date
parte 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
-d
opció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 ejecutardate
comandos y devolver resultados%
personaje con\
2>&1
al final de la transmisión de ambosstdout
ystderr
en ese archivo de registroEjemplo:
Salida:
fuente