以下文件位于/etc/cron.d中。 Ubuntu 12.04服务器BTW。
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
第一项发射罚款,第二项不发射。一旦我更改第二行以使用文字路径而不是变量,它就会触发。然而,当我编写自己的测试cron作业来使用变量时,它们可以正常工作。这是一个真正的难题!
答案 0 :(得分:9)
是的,这是crontab变量的限制。 =
符号右侧的字符串按字面解释...请参阅文档(man 5 crontab
)
答案 1 :(得分:4)
WTF?事实证明,双重嵌入变量就是问题所在。为什么是这样?您可以使用以下cron脚本进行测试:
tmpdir="/tmp"
subdir="$tmpdir/subdir"
*/1 * * * * root echo $tmpdir $subdir >/tmp/cron.out
生成的文件:
/tmp $tmpdir/subdir