Date time format in UNIX crontab

大城市里の小女人 提交于 2019-12-12 16:06:01

问题


I'm running a cron every 6 hours to backup my database. I want the filename to contain the date & time it was created in the following format:

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

This is the command I run:

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

What do I need to change date -d to?


回答1:


If you use a date format like date +"%d-%m-%Y_%H:%M" in your crontab you may need to escape the % characters with a backslash, like this: date +"\%d-\%m-\%Y_\%H:\%M".

Many crons handle % specially by replacing them with newline and sending the following text as stdin to the command before it. See man 5 crontab for details.




回答2:


The + operator on date gives you the flexibility to specify the date in whatever way/format you want, as long as there's a variable for what you want. In this case, from man date:

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

So, you'd have:

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

Or, applying to your command:

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

Note that I changed the forward slashes (/) in filenames to dashes (-) as you can't have forward slashes in unix/linux filenames.



来源:https://stackoverflow.com/questions/16691745/date-time-format-in-unix-crontab

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!