以下命令运行良好:
mysqldump -u root -proot db_name > /home/ronak/$( date +"%Y_%m_%d_%H_%M_%S" ).sql
但是,当我在crontab
中放入完全相同的命令时,我不会得到任何输出。我尝试用test.sql
更改文件名,在这种情况下,我会在所需的位置获得该文件。我认为crontab
中的date
有问题。
* * * * * root mysqldump -u root -proot db_name > /home/ronak/$( date +"%Y_%m_%d_%H_%M_%S" ).sql
一些发行版不喜欢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