在 Linux shell 中,date 是高频命令。经常使用date 命令按时间来创建文件。
1. date 命令详解
date命令是显示或设置系统时间与日期。
语法
常用选项
-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号;
-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号;
案例:
[zhang@localhost ~]$ echo 查看当前日期
查看当前日期
[zhang@localhost ~]$ date
Sat Mar 9 10:08:12 CST 2019
[zhang@localhost ~]$ echo 查看一天前的时间
查看一天前的时间
[zhang@localhost ~]$ date -d "-1 day"
Fri Mar 8 10:09:21 CST 2019
[zhang@localhost ~]$ echo 查看一年后的时间
查看一年后的时间
[zhang@localhost ~]$ date -d "+1 year"
Mon Mar 9 10:09:42 CST 2020
注:类似的参数还有很多,比如month (月份),hour( 小时 ) ,min( 分钟 ),sec( 秒 ) 等。
设置时间
[zhang@localhost ~]$ date
Sat Mar 9 10:16:14 CST 2019
[zhang@localhost ~]$ date -s "10:18:20 2019-03-09"
date: cannot set date: Operation not permitted
Sat Mar 9 10:18:20 CST 2019
[zhang@localhost ~]$ su root
Password:
[root@localhost zhang]# date -s "10:18:20 2019-03-09"
Sat Mar 9 10:18:20 CST 2019
[root@localhost zhang]# date
Sat Mar 9 10:18:21 CST 2019
注:设置时间,需要超级管理员权限。设置时间格式的很灵活,也可以只设置时间或日期。
时间格式字符串列表
格式 | 说明 |
%H | 小时,24小时制(00~23) |
%I | 小时,12小时制(01~12) |
%k | 小时,24小时制(0~23) |
%l | 小时,12小时制(1~12) |
%M | 分钟(00~59) |
%p | 显示出AM或PM |
%r | 显示时间,12小时制(hh:mm:ss %p) |
%s | 从1970年1月1日00:00:00到目前经历的秒数 |
%S | 显示秒(00~59) |
%T | 显示时间,24小时制(hh:mm:ss) |
%X | 显示时间的格式(%H:%M:%S) |
%Z | 显示时区,日期域(CST) |
%a | 星期的简称(Sun~Sat) |
%A | 星期的全称(Sunday~Saturday) |
%h,%b | 月的简称(Jan~Dec) |
%B | 月的全称(January~December) |
%c | 日期和时间(Tue Nov 20 14:12:58 2012) |
%d | 一个月的第几天(01~31) |
%x,%D | 日期(mm/dd/yy) |
%j | 一年的第几天(001~366) |
%m | 月份(01~12) |
%w | 一个星期的第几天(0代表星期天) |
%W | 一年的第几个星期(00~53,星期一为第一天) |
%y | 年的最后两个数字(1999则是99) |
案例:
[root@localhost zhang]# date
Sat Mar 9 10:38:38 CST 2019
[root@localhost zhang]# date +"%Y%m%d %H:%M:%S"
20190309 10:39:02
[root@localhost zhang]# date +%Y%m%d
20190309
2. date 案例
这里简单写一个mysql 数据库备份shell 脚本 mysql_backup.sh
#!/bin/bash
###########################################################################
#Author:guoping
#Date:2019/03/09 10:44
#Function:数据库备份
###########################################################################
mysql_host=localhost
mysql_user=root
mysql_password=referee
mysql_database=mysql
back_path=/data/mysql_backup
back_file_name="$mysql_database-`date +%Y%m%d`"
if [ -d "$back_path" ] ;then
mysqldump -h$mysql_host -u$mysql_user $mysql_database -p$mysql_password> "$back_path/$back_file_
name".sql 2>/dev/nullelse
echo "要备份的目录不存在"
exit -1
fi
cd $back_path
tar -czf "$back_file_name".tar.gz "$back_file_name".sql
注:这里只是个简单的数据库备份脚本,首先得保证/data/mysql_backup 这个目录存在,且可读写。适当修改下mysql账号密码即可使用。
执行以下命令:
bash mysql_backup.sh
也可以将此脚本加入到定时任务中,每天定时执行一次,这里不再赘述!!!