UNIX crontab中的日期时间格式

UNIX crontab中的日期时间格式,unix,datetime,cron,crontab,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更改为什么?在date上的+操作符允许您灵活地以您想要的任何方式/格式指定日期,只要有

我每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
更改为什么?

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文件名中不能使用前斜杠。

如果在crontab中使用日期格式,如
date+%d-%m-%Y\%H:%m“
,则可能需要用反斜杠转义
%
字符,如下所示:
date+“\%d-\%m-\%Y\%H:\%m”


许多cron专门处理
%
,方法是用换行符替换它们,并将以下文本作为stdin发送给它前面的命令。有关详细信息,请参见
man 5 crontab

使用以下命令:
date“+%Y\u%H:%M”
应该是date=`date+%Y\u%H:%M吗?是的,但带引号。还有
date=$(date“+%Y\u%H:%M”)
。请考虑分号对名称不太友好。给出一个错误:
/bin/sh:-c:第0行:在查找匹配的“””时出现意外的EOF
用代码更新您的问题,这样我们就可以看到可能出现的错误。只要这些目录都已存在,在名称中使用/就可以了。您可以通过运行
$(mkdir-p$(dirname$date))
创建它们,我相信斜杠是文件名的一部分,而不是路径的一部分。只有OP可以确认……:-/谢谢我尝试过很多事情,但没有注意到这一点。我从旧版本的CentOS移动到了新版本,我想新版本需要在%字符上转义。谢谢