下面的命令工作正常:
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
答案 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