这个cron为什么不做任何事情?

时间:2017-04-28 09:14:15

标签: cron rsync

所以,我有一个非常简单的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/ \;)

但实际上没有任何东西被复制。

1 个答案:

答案 0 :(得分:1)

  

Cron总是以大多数空的环境运行。 HOME,LOGNAME和   壳已定;而且路径非常有限。

link here

因此,您可以使用完整路径完成所有应用添加环境变量

例如在Ubuntu中你可以 将 rsync 替换为 / usr / bin / rsync
通过 / usr / bin / ssh 重新 ssh

你可以通过检查你的cron的环境变量 将此添加到cron并检查/tmp/env.output

* * * * * env > /tmp/env.output

here is detail