cron-job中的文件名问题

时间:2015-06-25 21:23:54

标签: mysql linux apache cron mysqldump

下面的命令工作正常:

mysqldump -u root -proot db_name > /home/ronak/$( date +"%Y_%m_%d_%H_%M_%S" ).sql

但是,当我在crontab中输入完全相同的命令时,我没有得到任何输出。我尝试用test.sql更改文件名,在这种情况下,我将文件放在所需的位置。我认为date中的crontab出现了问题。

* * * * * root mysqldump -u root -proot db_name > /home/ronak/$( date +"\%Y_\%m_\%d_\%H_\%M_\%S" ).sql

1 个答案:

答案 0 :(得分:1)

有些发行版不喜欢cron中的$()构造。要在cron中测试,请尝试触摸文件,例如/ tmp:

* * * touch "/tmp/$(date +%Y-%m-%d).txt"
* * * touch "/tmp/$(date +\%Y-\%m-\%d).csv"

查看是否有任何文件出现在/ tmp

(a)在touch之后出现在文件系统中的一个:

在你的问题cron命令中>符号后面的文件名周围可能需要一个外包装双引号。

(b)均未出现:

创建一个bash脚本并在cron任务中触发它,因为它具有更强大的日期功能:

#!/bin/bash
NOW=`/bin/date +"%Y%m%d-%H%M%S"`
if [[ "$?" != "0" ]]; then
  NOW="date_not_great"
fi

mysqldump -u root -proot db_name > /home/ronak/$NOW.sql
if [[ "$?" != "0" ]]; then
  echo "$0: backup failed with error code $?"
fi