带有日期的 Cron 文件名正在传递 Y_m_d 而不是实际日期

Cron filename with date is passing Y_m_d not actual date

每天使用 cron 备份 mysql 到一个文件夹。因此尝试在 linux 服务器中使用以下代码安排 cron。 related post

0 0 * * * <username> mysqldump -u<mysql username> -p<mysql password> <database name> > /home/<username>/Db_BackUp/expense_$( date +"\℅Y_\℅m_\℅d" ).sql

以上 cron 正在运行,但生成的文件名类似于

expense_\.Y_\.m_\.d.sql

I need cron to create filename as expense_2016_04_05.sql

如何在 cron 中执行此操作?

related answer from SO Post

有关 cron 重启的附加信息 SO Post

由于 cron 不是 shell,它不会像 shell 那样在 cron 行中执行 $() 包装器中的项目。然而,一些像 Vixie Cron 这样的 cron 将允许你在你的命令之前定义变量:

YMD=/bin/date +%Y_%m_%d
0 0 * * * /path/to/command > /home/username/Db_BackUp/expense_$($YMD).sql

如果这不起作用,您可能需要编写一个帮助程序脚本,然后 运行 it 通过 cron 代替。例如:

mysqldump_helper.sh

#!/bin/bash
YMD=`/bin/date +%Y_%m_%d`
/path/to/command > /home/username/Db_BackUp/expense_$YMD.sql

crontab

* * * * * /path/to/mysqldump_helper.sh