cron 输出不正确?

cron 输出不正确?

请原谅我的无知。我搜索过,但也许我不确定要搜索什么才能自己回答我的问题,所以我转向这个论坛寻求一些指导。

我已启动 Ubuntu 服务器 12.04.3。此服务器主要运行 MySQL。我正尝试设置一项将执行每日转储的作业。

我以自己的用户身份登录,我创建了一个名为/主页/xyz/MySQL_Dumps/RunMySQLDump

-rwxrwxr-x  1    0 1000       1012 Jan 15 15:26 RunMySQLDump

crontab –l显示:

12 * * * * /home/xyz/MySQL_Dumps/RunMySQLDump

RunMySQLDump 的内容:

MyTimeNow=$(date +"%Y%m%e_%H%M")

mysqldump  --host=localhost --user=<user> --password=<password>--max_allowed_packet=1G --skip-opt --port=3306 --default-character-set=utf8 --single-transaction=TRUE --dump-date=TRUE --comments --flush-privileges --force --all-databases --result-file=/home/xyz/MySQL_Dumps/$MyTimeNow-X.dump

mysqldump  --host=localhost --user=<user> --password=<password> --max_allowed_packet=1G --skip-opt --port=3306 --default-character-set=utf8 --single-transaction=TRUE --dump-date=TRUE --comments --flush-privileges --force --all-databases --result-file=/home/xyz/MySQL_Dumps/$MyTimeNow-Y.dump

mysqldump  --host=localhost --user=<user> --password=<password> --max_allowed_packet=1G --skip-opt --port=3306 --default-character-set=utf8 --single-transaction=TRUE --dump-date=TRUE --comments --flush-privileges --force --all-databases --result-file=/home/xyz/MySQL_Dumps/$MyTimeNow-Z.dump

tar -cvf $MyTimeNow-all.tar $MyTimeNow*.dump
gzip *.tar
rm $MyTimeNow*.dump

这就是我遇到的问题。当我以自己的用户“xyz”身份登录服务器并手动运行命令时./运行MySQLDump,一切正常:

/主页/xyz/MySQL_Dumps

-rw-rw-r--  1 1000 1000 1042848433 Jan 15 14:03 20140114_0310-all.tar.gz
-rw-rw-r--  1 1000 1000 1065212917 Jan 15 15:18 20140115_1512-all.tar.gz
-rw-rw-r--  1 1000 1000 1065718672 Jan 15 16:28 20140115_1622-all.tar.gz
-rw-rw-r--  1 1000 1000 1077965846 Jan 16 11:42 20140116_1136-all.tar.gz

然而,当我让 cron 运行该作业时,我得到的结果如下: /主页/xyz(注意:不在 /home/xyz/MySQL_Dumps 中并且没有数据!)

-rw-rw-r--  1 xyz xyz     67 Jan 16 16:12 20140116_1612-all.tar.gz

有人能给我指明正确的方向吗?

非常感谢!

答案1

./RunMySQLDump当您使用脚本的工作目录运行时/home/xyz/MySQL_Dumps/,这就是它起作用的原因。

cron启动脚本时,它的工作目录是/home/xyz/(您的主目录),就像在用户 crontab 中一样。

脚本的第一行使用绝对路径,最后一行使用相对路径。这就是它失败的原因。

在开始使用相对路径之前或最好在脚本开头更改脚本中的工作目录:

cd /home/xyz/MySQL_Dumps/

或者在脚本的任何地方使用绝对路径。

相关内容