UNIX crontab中的日期时间格式
我每6小时运行一次cron来备份我的数据库。 我希望文件名包含以下格式创建的日期和时间: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上的+操作符允许您灵活地以您想要的任何方式/格式指定日期,只要有
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移动到了新版本,我想新版本需要在%字符上转义。谢谢