所以,我有一个非常简单的cron设置为每天运行。它使用某些参数进行查找和rsync。当它在bash命令行上运行时,它运行得很好,但是当它在root crontab中时,它不想知道。有什么想法吗?
/usr/bin/find /var/www/*/logs/ -iname '*.lzma' -mtime +21 -exec rsync -a --ignore-existing --relative -e 'ssh -q -p 2230 -o "StrictHostKeyChecking no"' {} root@nas0:/space/Logs/reporting0/ \;
Syslog显示它已运行:
Apr 28 09:40:01 reporting1 CRON[26347]: (root) CMD (/usr/bin/find /var/www/*/logs/ -iname '*.lzma' -mtime +21 -exec rsync -a --ignore-existing --relative -e 'ssh -q -p 2230 -o "StrictHostKeyChecking no"' {} root@nas0:/space/Logs/reporting1/ \;)
但实际上没有任何东西被复制。
答案 0 :(得分:1)
Cron总是以大多数空的环境运行。 HOME,LOGNAME和 壳已定;而且路径非常有限。
因此,您可以使用完整路径完成所有应用或添加环境变量。
例如在Ubuntu中你可以
将 rsync 替换为 / usr / bin / rsync
通过 / usr / bin / ssh 重新 ssh
你可以通过检查你的cron的环境变量 将此添加到cron并检查/tmp/env.output
* * * * * env > /tmp/env.output