• date、sleep和usleep命令


    date命令                      

    date用于获取和设置操作系统的时间,还有hwclock是获取硬件时间。

    date有个选项"-d",可以用来描述获取什么时候的时间,描述的方式非常开放,但不能使用"now"关键字,其他的如3天前"3 days ago",3天后"3 days",昨天"yesterday",下周一"next Monday",epoch时间"@EPOCH"等等。

    Linux中设置date命令的显示格式:date [+format],其中"+"表示从前面的时间中获取其中的格式部分,如date -d "yesterday" +"%Y"获取的是昨天的年份部分。

    format格式如下所示:标红色的较常用。

      符号 意义 描述
    %y 年(后两位) last two digits of year (00..99)
    %Y year
    %m month (01..12)
    %j 年中天 day of month (如01)
    %d 月中天 day of month (如01)
    %w 周中天 day of week (0..6); 0 is Sunday
    %u 周中天 day of week (1..7); 1 is Monday
    %U 年中周(00-53) week number of year with Sunday as first day
    %W 年中周(00-53) week number of year with Monday as first day
    %H 时(24时制) hour (00..23)
    %I 时(12时制) hour (01..12)
    %M minute (00..59)
    %S second (00..60)
    %N 纳秒 ns of current minute
    %s 从1970-01-01到目前时间的秒数总数

    完整

    格式

    %T 完整时间 time; same as %H:%M:%S
    %D 日期完整格式 date; same as %m/%d/%y
    %F 日期完整格式 date; same as %Y-%m-%d
    特殊格式 %n 换行 a newline
    %t tab键 a tab
    [root@localhost ~]# date +%F
    2019-12-08
    [root@localhost ~]# date +"%F %T"   # 有空格需要使用双引号或引号来分隔
     2019-12-08 13:09:45 [root@localhost ~]# date +"%Y-%m-%d %H:%M:%S" 2019-12-08 13:10:14

    使用date命令可以计算时间差。例如:

    [root@localhost ~]# date -d "3 days ago" +%F
    2019-12-05
    [root@localhost ~]# date -d "-3 days" +%F
    2019-12-05
    [root@localhost ~]# date -d "now  - 3 days" +%F
    2019-12-05

    再例如,给定一个时间,计算它的前几天,后几天。

    [root@localhost ~]# date -d "2019-12-08 3 days ago" +%F
    2019-12-05
    [root@localhost ~]# date -d "2019-12-08 -3 days" +%F
    2019-12-05

    给定一个日期,计算该日期所在星期的星期一是几月几号。例如,2018-05-12是星期六,那么星期一是2018-05-07。

    [root@localhost ~]# src_date="2018-05-12"
    [root@localhost ~]# src_weekday=`date -d $src_date +%w`
    [root@localhost ~]# Mon_date=`date -d "$src_date - $(( src_weekday - 1 )) days" +%F`
    [root@localhost ~]# echo $Mon_date
    2018-05-07

    date命令还可以计算延迟时间(两个时间点的时间差)。如果要计算精确度为秒级的延迟,可直接使用%s计算,但如果要计算毫秒级、微秒级甚至是纳秒级的时间差,则需要对date的结果进行一番计算和转换。以下是秒级时间差计算方法,毫秒级计算方法见:计算毫秒级、微秒级时间差

    [root@localhost ~]# start_time=$(date +"%s")
    [root@localhost ~]# find / -type f -name "*.db" &>/dev/null
    [root@localhost ~]# end_time=$(date +"%s")
    [root@localhost ~]# time_diff=$(( start_time - end_time ))
    [root@localhost ~]# echo $time_diff
    -17

    sleep和usleep                  

     在shell中常使用sleep命令指定休眠时间,休眠的意思表示让当前进程进入睡眠状态。例如:

    [root@localhost ~]# sleep 5

    sleep默认的休眠单位为秒,因此上面表示休眠5秒钟。如果要休眠毫秒级、微秒级,则可以使用小数。例如:

    [root@localhost ~]# sleep 0.5

    表示休眠半秒钟。

    此外,还有专门的微秒级的休眠命令usleep。例如:

    [root@localhost ~]# usleep 1000

    表示休眠1000微秒,即1毫秒。

  • 相关阅读:
    shell80set变量
    shell79控制多进程的数量
    shell78管道
    sina sae开发中出现的问题
    html中代码高亮显示
    handlebars模板替换
    打印目录下所有的文件名(包含深层次目录)
    input为disabled提交后得不到该值的解决方法
    Global和Globals
    js算法运算
  • 原文地址:https://www.cnblogs.com/liujunjun/p/12005257.html
Copyright © 2020-2023  润新知