2013-10-24 10 views
5

Ten plik poniżej znajduje się w /etc/cron.d. Ubuntu 12.04 Server BTW.Rozszerzenie zmiennych cron nie jest tak dobre?

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 

Pierwszy element odpala się, drugi nie. Kiedy zmienię drugą linię, aby użyć ścieżki dosłownej, a nie zmiennej, odpalam. Jednak kiedy piszę własne zadanie test cron, aby używać zmiennych, działają one poprawnie. To jest prawdziwy strach!

Odpowiedz

5

WTF ?! Zdaje się, że problemem jest podwójnie osadzona zmienna. Dlaczego to? Można przetestować z poniższym skrypcie cron:

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

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

plik wynikowy:

/tmp $tmpdir/subdir 
6

Tak, jest to ograniczenie zmiennych crontaba. Ciąg znaków po prawej stronie znaku = jest interpretowany dosłownie ... Zobacz dokumentację (man 5 crontab)