linux date 命令及案例

在 Linux shell 中,date 是高频命令。经常使用date 命令按时间来创建文件。

1. date 命令详解

 date命令是显示或设置系统时间与日期。

语法

linux date 命令及案例

 

常用选项

-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号;
-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号;
 

案例:

[[email protected] ~]$ echo 查看当前日期
查看当前日期
[[email protected] ~]$ date
Sat Mar  9 10:08:12 CST 2019
[[email protected] ~]$ echo 查看一天前的时间
查看一天前的时间
[[email protected] ~]$ date -d "-1 day"
Fri Mar  8 10:09:21 CST 2019
[[email protected] ~]$ echo 查看一年后的时间
查看一年后的时间
[[email protected] ~]$ date -d "+1 year"
Mon Mar  9 10:09:42 CST 2020

注:类似的参数还有很多,比如month (月份),hour( 小时 ) ,min( 分钟 ),sec( 秒 ) 等。

设置时间

[[email protected] ~]$ date 
Sat Mar  9 10:16:14 CST 2019
[[email protected] ~]$ date -s "10:18:20 2019-03-09"
date: cannot set date: Operation not permitted
Sat Mar  9 10:18:20 CST 2019
[[email protected] ~]$ su root 
Password: 
[[email protected] zhang]# date -s "10:18:20 2019-03-09"
Sat Mar  9 10:18:20 CST 2019
[[email protected] 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)

案例:

[[email protected] zhang]# date 
Sat Mar  9 10:38:38 CST 2019
[[email protected] zhang]# date +"%Y%m%d %H:%M:%S"
20190309 10:39:02
[[email protected] 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账号密码即可使用。

linux date 命令及案例

 执行以下命令:

bash mysql_backup.sh 

 linux date 命令及案例

 也可以将此脚本加入到定时任务中,每天定时执行一次,这里不再赘述!!!