Ubuntu 12.04 cron 未执行

Ubuntu 12.04 cron 未执行

这是我遇到的问题...

我有一个网络服务器,流量很大。我想在另一台服务器上保留它的近乎实时的备份。该备份服务器将处理日志文件、访客跟踪文件、数据库备份等。因此,我通过备份服务器上的 cron 在不同时间执行了几个命令(crontab -e)。无论出于什么原因,我只收到了一些执行的邮件,所以我今天添加了日志记录。

我认为用户 cron 下的任何命令都没有执行。(根 cron 下也没有执行 - sudo crontab -e。)下面是一个从 CLI 运行良好但从 cron 运行不正常的命令示例。目录 /media/eagle805 是挂载主服务器 (eagle805) 的备份服务器上的目录。该目录归拥有 cron 的用户所有。

*/1 * * * * mv /media/eagle805/ver1/php/VisitorTracking/data/raw/*.raw /var/www/ver1/php/VisitorTracking/data/raw/. >> /var/www/backups/visitor_tracking_file_move_$(date +%Y-%m-%d).log 2>&1

当我从 CLI 运行此命令时,它工作正常。日志文件已创建(且为空)。我想要从主服务器移动到备份服务器的所有文件都已移动。但它不是从 cron 运行的。我收到此错误(通过电子邮件):

/bin/sh: 1:语法错误:文件结尾意外(预期“)”)

谁能告诉我我错过了什么?

谢谢

答案1

您应该使用反斜杠来转义百分号:

*/1 * * * * mv /media/eagle805/ver1/php/VisitorTracking/data/raw/*.raw /var/www/ver1/php/VisitorTracking/data/raw/. >> /var/www/backups/visitor_tracking_file_move_$(date +\%Y-\%m-\%d).log 2>&1

参考: man 5 crontab中间部分内容如下:

命令中的百分号(%),除非使用反斜杠(\)进行转义,否则将被更改为换行符,并且第一个 % 之后的所有数据都将作为标准输入发送到命令。

相关内容