下面的命令工作正常:
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
关于linux - cron-job 中的文件名问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31061051/