2013-10-24 2 views
5

Diese Datei befindet sich in /etc/cron.d. Ubuntu 12.04 Server BTW.Cron-Skript variable Erweiterung nicht so gut?

zurmo_install_path="/var/www/zurmo" 
zurmo_commands_path="$zurmo_install_path/app/protected/commands" 

*/1 * * * * www-data cd /var/www/zurmo/app/protected/commands && ./zurmoc jobManager super EmailArchiving >/dev/null 2>&1 
*/1 * * * * www-data cd "$zurmo_commands_path" && ./zurmoc jobManager super ProcessOutboundEmail >/dev/null 2>&1 

Das erste Element feuert gut, das zweite nicht. Sobald ich die zweite Zeile ändere, um den Literalpfad und nicht die Variable zu verwenden, feuert es gut ab. Aber wenn ich meinen eigenen Test-Cron-Job schreibe, um Variablen zu verwenden, funktionieren sie in Ordnung. Das ist ein echter Stumper!

Antwort

5

WTF ?! Eine doppelt eingebettete Variable ist das Problem, stellt sich heraus. Warum ist das? Sie können mit der folgenden Cron-Skript testen:

tmpdir="/tmp" 
subdir="$tmpdir/subdir" 

*/1 * * * * root echo $tmpdir $subdir >/tmp/cron.out 

Die resultierende Datei:

/tmp $tmpdir/subdir 
6

Ja, das ist eine Einschränkung der crontab Variablen. Die Zeichenfolge auf der rechten Seite der = Zeichen wird buchstäblich interpretiert ... Siehe die Dokumentation (man 5 crontab)