Eu quero criar um arquivo de log para um script cron que tenha a hora atual no nome do arquivo de log. Este é o comando que tentei usar:
0 * * * * echo hello >> ~/cron-logs/hourly/test`date "+%d"`.log
Infelizmente, recebo esta mensagem quando é executada:
/bin/sh: -c: line 0: unexpected EOF while looking for matching ``'
/bin/sh: -c: line 1: syntax error: unexpected end of file
Eu tentei escapar da date
parte de várias maneiras, mas sem muita sorte. É possível fazer isso acontecer em linha em um arquivo crontab ou preciso criar um shell script para fazer isso?
date +\%Y\ \%m\ \%d\ \%H:\%M:\%S
-cronlogVocê também pode colocar seus comandos em um arquivo shell e, em seguida, executar o arquivo shell com cron.
jobs.sh
cron
fonte
Se você deseja transformar a string de formatação de data como uma variável (para evitar duplicar a string inteira), NÃO escape
%
e NÃO a coloque em$()
Por exemplo, enquanto declara a string, basta escrever:
Em seguida, escreva a instrução cron com o
$($VARIABLE_NAME)
seguinte:Graças ao cyberx86 , sua resposta na ServerFault pode ser mais completa:
fonte
No cron, você pode usar esta sintaxe simples:
fonte
-d
opção, que não é usada na pergunta (e você não a explicou). Como você justifica chamar essa "sintaxe simples"?Todas as respostas acima usam aspas duplas (nem todas funcionaram na minha configuração). Isso funcionou para mim:
fonte
Uma solução básica:
$()
para executardate
comando e retornar saída%
caractere com\
2>&1
no final para transmitir ambosstdout
estderr
para esse arquivo de logExemplo:
Resultado:
fonte