Je veux créer un fichier journal pour un script cron qui a l'heure actuelle dans le nom du fichier journal. Voici la commande que j'ai essayé d'utiliser:
0 * * * * echo hello >> ~/cron-logs/hourly/test`date "+%d"`.log
Malheureusement, je reçois ce message quand ça marche:
/bin/sh: -c: line 0: unexpected EOF while looking for matching ``'
/bin/sh: -c: line 1: syntax error: unexpected end of file
J'ai essayé d'échapper à la date
partie de différentes manières, mais sans trop de chance. Est-il possible que cela se produise en ligne dans un fichier crontab ou dois-je créer un script shell pour le faire?
date +\%Y\ \%m\ \%d\ \%H:\%M:\%S
-cronlogVous pouvez également placer vos commandes dans un fichier shell, puis exécuter le fichier shell avec cron.
jobs.sh
cron
la source
Si vous souhaitez que la chaîne de formatage de la date soit une variable (pour éviter de dupliquer la chaîne entière), n'échappez pas
%
et ne le mettez pas dans$()
Par exemple, pendant que vous déclarez la chaîne, écrivez simplement:
Ensuite, écrivez la déclaration cron avec
$($VARIABLE_NAME)
comme ceci:Grâce à cyberx86 , sa réponse sur ServerFault pourrait être plus complète:
la source
Dans cron, vous pouvez utiliser cette syntaxe simple:
la source
-d
option, qui n'est pas utilisée dans la question (et vous ne l'avez pas expliquée). Comment justifiez-vous appeler cette "syntaxe simple"?Toutes les réponses ci-dessus utilisent des guillemets doubles (ils n’ont pas tous fonctionné pour ma configuration). Cela a fonctionné pour moi:
la source
Une solution de base:
$()
pour exécuter ladate
commande et retourner la sortie%
caractère avec\
2>&1
à la fin pour la diffusion en continustdout
etstderr
dans ce fichier journalExemple:
Sortie:
la source