data指令可以用于显示系统当前的时间
并可对时间进行增加,减少等操作,以用于计划任务等场景。
data
2023年 05月 15日 星期一 22:35:08 CST
显示当前日期
date +%F
2023-05-15
#显示当天的日期
date +%D
05/15/23
#反写当天的日期
指定日期输出格式
date +%Y%m%d
20230515
#显示当天的日期 按年月日格式显示
date +%Y/%m/%d
2023/05/15
#显示当天的日期,以/隔开
date +"%Y/%m/%d %H:%M:%S"
2023/05/15 18:23:11
#显示日期和现在的时间
对日期进行增减操作 -d
date +%Y%m01
date +"%Y%m01" #更改day=01
20230501
#当月的第一天
date -d "1 month" +%Y%m%d
20230615
#下个月今天
date -d "1 month" +%Y%m01
20230601
#下个月第一天
date -d "1 month ago" +%Y%m%d
20230415
#上个月今天
date -d "1 month ago" +%Y%m01
20230401
#上个月第一天
date -d "1 day" +%Y%m%d
20230516
#明天
date -d "tomorrow" +%Y%m%d
20230516
#明天
date -d "1 day ago" +%Y%m%d
20230514
#昨天
date -d "-1 day" +%Y%m%d
20230514
#昨天
date -d "yesterday" +%Y%m%d
20230514
#昨天
求出每个月倒数第三天(重中之重)
date -d "$(date +"%Y%m01") -1 day" +"%Y%m%d"
20230430 #取本月1号,再减一天
#上个月最后一天
date -d "$(date +"%Y%m01") -3 day" +"%Y%m%d"
20230428
#上个月的倒数第3天
date -d "$(date -d "1 month" +%Y%m01) -1 day" +%Y%m%d
20230531 #先转移到下月,1号 再减一天
#这个月最后一天
date -d "$(date -d "1 month" +%Y%m01) -3 day" +%Y%m%d
20230529 #先转移到下月,1号 再减3天
#这个月倒数第3天
每个月最后一天执行命令(重中之重)
方法1.直接将日期判断写在脚本内,再将脚本添加到计划任务(crontab)
lastday=$(date -d "$(date -d "1 month" +%Y%m01) -1 day" +%Y%m%d)
today=$(date +%Y%m%d)
if [ $today == $lastday ]
then
echo "今天是本月最后一天"
crontab -e
0 0 28-31 * * /opt/test.sh
方法2.直接将日期判断写在计划任务(crontab)内,符合日期要求执行脚本
crontab -e
0 0 28-31 * * if [ "$(date -d "$(date -d "1 month" +%Y%m01) -1 day" +%Y%m%d)" == "$(date +%Y%m%d)" ];then /opt/test.sh;fi
#28 29 30 31 日 0点0分 if判断一次 本月最后一天是否是今天 如果是执行test.sh脚本
显示上次重启的日期和时间
date -d "$(awk -F "." '{print $1}' /proc/uptime) second ago" +"%F %H:%M:%S"
2023-05-15 22:33:57
显示上次系统重启时间,等同于uptime
second ago为显示多少秒前的时间
+"%F %H:%M:%S"等同于+"%Y-%m-%d %H:%M:%S"的时间格式
/proc/uptime 第一列输出的是,系统启动到现在的时间(以秒为单位)
第二列输出的是,系统空闲的时间(以秒为单位)
date -d "$(cat /proc/uptime | awk -F. '{print $1}') second ago" +"%Y-%m-%d %H:%M:%S"
2023-05-15 22:33:57 #cat 通过 | 传输给awk处理 从缓存中读,比上方命令更高效
1. cat /proc/uptime → 3237.81 25848.28
2. cat /proc/uptime | awk -F. '{print $1}' → 3237
3. → date -d "3272 second ago" +"%Y-%m-%d %H:%M:%S"
uptime
23:35:35 up 1:01, 1 user, load average: 0.00, 0.01, 0.05