shell—— 18.date、sleep和usleep

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换行
特殊格式%ttab键
[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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值