UNIX crontab中的日期时间格式

时间:2013-05-22 12:27:21

标签: unix datetime cron crontab

我每6小时运行一次cron来备份我的数据库。 我希望文件名包含日期&时间是按以下格式创建的:

mysqlbackup_22/5/2013_15:45.sql.gz

这是我运行的命令:

date=`date -d`; mysqldump -uusername -ppassword dbname | gzip > /path/to/dir/mysqlbackup_$date.sql.gz

我需要将date -d更改为?

2 个答案:

答案 0 :(得分:4)

如果您在crontab中使用date +"%d-%m-%Y_%H:%M"之类的日期格式,则可能需要使用反斜杠转义%字符,如下所示:date +"\%d-\%m-\%Y_\%H:\%M"

许多crons处理%特别是用换行符替换它们并将以下文本作为stdin发送到它之前的命令。有关详细信息,请参阅man 5 crontab

答案 1 :(得分:1)

+上的date运算符使您可以灵活地以您想要的任何方式/格式指定日期,只要有您想要的变量即可。在这种情况下,来自man date

   %d     day of month (e.g, 01)
   ...
   %H     hour (00..23)
   ...
   %m     month (01..12)
   %M     minute (00..59)
   ...
   %Y     year

所以,你有:

date +"%d/%m/%Y_%H:%M"

或者,适用于您的命令:

date=`date +"%d-%m-%Y_%H:%M"`; mysqldump -uusername -ppassword dbname | gzip > /path/to/dir/mysqlbackup_$date.sql.gz

请注意,我将文件名中的正斜杠(/)更改为短划线(-),因为您无法在unix / linux文件名中包含正斜杠。