linux - cron-job 中的文件名问题

标签 linux apache cron mysql

下面的命令工作正常:

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/

相关文章:

linux - 使用 grep -n (data) file1.txt > file2.txt

php - PHP CLI 脚本可以在不 fork 的情况下调用自身吗?

Apache 重写 : Always use HTTPS (how to add an exception)

PHP 将文件上传到网络服务器根目录之外的目录

php - Ubuntu 16.10 x64 上的 Laravel 5.3 的 Cron 作业

java - 如果我不 shutdown() quartz 调度程序会发生什么

linux - 为什么 IPv6 允许一个接口(interface)有多个地址?

linux - 如何使用 DDD 对本地 Qemu 虚拟机进行内核调试?

linux - Perl CGI "End of script output before headers"

shell - Cron 不执行。脚本工作正常