1.date命令
date获取和设置操作系统的时间,hwclock获取硬件时间。
date选项"-d",描述获取什么时候的时间,不能使用"now"关键字,3天前"3 days ago",3天后"3 days",昨天"yesterday",下周一"next Monday",epoch时间"@EPOCH"。
date命令的显示格式:date [+format],其中"+“表示从前面的时间中获取其中的格式部分,date -d “yesterday” +”%Y"获取的是昨天的年份部分。
日期格式
符号 | 意义 | 描述 |
---|---|---|
年 | %y | 年(后两位) |
年 | %Y | 年 |
月 | %m | 月 |
日 | %j | 年中天 |
日 | %d | 月中天 |
日%w | 周中天 | day of week (0…6); 0 is Sunday |
日 | %u | 周中天 |
周 | %U | 年中周(00-53) |
周 | %W | 年中周(00-53) |
时 | %H | 时(24时制) |
时 | %I | 时(12时制) |
分 | %M | 分 |
秒 | %S | 秒 |
秒 | %N | 纳秒 |
秒 | %s | 秒 |
完整格式 | %T | 完整时间 |
完整格式 | %D | 日期完整格式 |
完整格式 | %F | 日期完整格式 |
特殊格式 | %n | 换行 |
特殊格式 | %t | tab键 |
[root@master ~]# date +%F
2020-03-12
[root@master ~]# date +"%F %T" # 有空格需要使用双引号或引号来分隔
2020-03-12 10:48:34
[root@master ~]# date +"%Y-%m-%d %H:%M:%S"
2020-03-12 10:47:49
使用date命令可以计算时间差。
#以下3个命令等价
date -d "3 days ago" +%F
date -d "-3 days" +%F
date -d "now - 3 days" +%F
再例如,给定一个时间,计算它的前几天,后几天。
#以下两条命令等价
date -d "2020-03-12 3 days ago" +%F
date -d "2020-03-12 - 3 days" +%F
给定一个日期,计算该日期所在星期的星期一是几月几号。例如,2020-03-12是星期六,那么星期一是2018-05-07。
#!/bin/bash
src_date="2020-03-12"
src_weekday=`date -d $src_date +%w`
Mon_date=`date -d "$src_date - $(( src_weekday - 1 )) days" +%F`
echo $Mon_date
date命令还可以计算延迟时间(两个时间点的时间差)。如果要计算精确度为秒级的延迟,可直接使用%s计算,但如果要计算毫秒级、微秒级甚至是纳秒级的时间差,则需要对date的结果进行一番计算和转换。
#!/bin/bash
start_time=$(date +"%s")
find / -type f -name "*.db" &>/dev/null
end_time=$(date +"%s")
time_diff=$(( start_time - end_time ))
echo $time_diff
2.sleep和usleep
在shell中常使用sleep命令指定休眠时间,休眠的意思表示让当前进程进入睡眠状态。
sleep 5
sleep默认的休眠单位为秒,因此上面表示休眠5秒钟。如果要休眠毫秒级、微秒级,则可以使用小数。
sleep 0.5
表示休眠半秒钟。
微秒级的休眠命令usleep
usleep 1000
表示休眠1000微秒,即1毫秒。
————Blueicex 2020/03/07 22:15 blueice1980@126.com