Commande avec symboles de pourcentage non exécutés dans crontab


11

Le crontab suivant ne fonctionne pas:

# TEST LINE DOES DOT RUN
*/1 * * * * /bin/echo 'test '`/bin/date +%Y-%m-%d` >> /tmp/test

J'ai également essayé de le démarrer avec:

SHELL=/bin/bash

Mise à jour: je pensais que les caractères de backtick `étaient les méchants, mais comme la réponse ci-dessous clarifie le pourcentage% était le coupable!


Votre ligne de test ne fonctionnera qu'une fois par heure. Ce n'est peut-être pas ce que vous vouliez tester.
user535733

n'est pas la première de la minute? # mh dom mon dow command
lpanebr

Vous avez raison .. J'ai changé pour * / 1 pour le faire fonctionner toutes les minutes. Le cron fonctionne bien. Il y a quelque chose avec les commandes. Il semble que ce soit/bin/date +%Y-%m-%d
lpanebr

Réponses:


13

Dans /bin/date +%Y-%m-%d, vous devez vous échapper %avec \selon cette page de manuel :

Le champ "sixième" (le reste de la ligne) spécifie la commande à exécuter. La portion de commande entière de la ligne, jusqu'à une nouvelle ligne ou un caractère%, sera exécutée par / bin / sh ou par le shell spécifié dans la variable SHELL du fichier de configuration. Les signes de pourcentage (%) dans la commande, sauf s'ils sont échappés avec une barre oblique inverse (), seront modifiés en caractères de nouvelle ligne, et toutes les données après le premier% seront envoyées à la commande comme entrée standard.


2
Merci! Je vais modifier la question afin qu'elle corresponde au vrai problème.
lpanebr
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.