Voici ce que j'aimerais automatiser:
00 08 * * * psql -Uuser database < query.sql | mail [email protected] -s "query for `date +%Y-%m-%dZ%I:%M`"
Voici le message d'erreur:
/bin/sh: -c: line 0: unexpected EOF while looking for matching ``'
/bin/sh: -c: line 1: syntax error: unexpected end of file
Réponses:
Depuis crontab (5) :
Ajoutez simplement des barres obliques inverses avant les signes%:
la source
Pour résoudre le problème, échappez à vos% caractères .
date +%Y-%m-%d
devrait êtredate +\%Y-\%m-\%d
Malheureusement, cette réponse est un peu tardive, mais le problème n'est pas PATH ou des astuces - le problème est simplement que le caractère de pourcentage '%' est un caractère spécial utilisé pour désigner un NEWLINE ou un STDIN dans les entrées crontab .
Cela entre en conflit avec l'entrée de mise en forme de la
date
commande. En tant que telle, une commande qui comprend:date +%Y-%m-%d
sera interprétée comme:date Y- m- d
la source
J'ai aussi eu beaucoup de problèmes avec les backticks. Parfois, vous avez besoin de plusieurs occurrences de guillemets et de guillemets. Remplacez-les simplement par $ ().
Exemple:
-Gilson Soares
la source
Cela n'a rien à voir avec les backsticks. Une chose terrible est que cron NE voit PAS le CHEMIN, et vous DEVEZ dire à cron "qu'est-ce que le CHEMIN?" encore et encore dans les scripts cron.
Et je suis favorable à l'écriture de la commande dans un fichier au lieu de passer la commande littéralement dans la ligne cron. C'est beaucoup plus élégant d'avoir
que
ces lignes peuvent aller à l'intérieur d'un seul fichier, chmod + x, et ce fichier à appeler.
la source