2013-04-26 5 views
2

J'écris des fichiers dans un journal exécuté par un script bash en utilisant cron. L'appel sur Cron ressemble à ceci:Pourquoi les pourcentages (%) ne fonctionnent pas dans crontab?

*/25 * * * * bash script.sh > "/var/log/$(date +%Y-%m-%d_%H:%M).log" 

Mais quand je vérifie la crontab il enregistre comme

*/25 * * * * bash script.sh > "/var/log/$(date +).log" 

Et il n'a jamais écrit le fichier journal. Y at-il quelque chose que je dois changer pour obtenir cron pour écrire la date?

Répondre

4

Il est une question de variables qui s'échappent:

* * * * * /usr/bin/touch /tmp/$(date +\%Y:\%m).log 
#         ^^

a travaillé pour moi.

De man 5 crontab:

Pourcentage-signes (%) dans la commande, à moins échappé avec barre oblique inverse (\), seront changés en caractères de nouvelle ligne, et toutes les données après le premier% seront envoyés à la commande comme entrée standard.

Alors

*/25 * * * * /bin/bash script.sh > "/var/log/$(date +\%Y-\%m-\%d_\%H:\%M).log" 
#             ^^^^^

devrait fonctionner.

Remarque J'ai utilisé /bin/bash au lieu de seulement bash.

Questions connexes