Linux 日期命令data

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

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值