美文网首页
shell时间获取及延时

shell时间获取及延时

作者: 迷鹿milu | 来源:发表于2019-08-18 12:02 被阅读0次

    时间获取及延时

    1 获取时间

    纪元时:在系统内部,日期被存储为一个整数,其取值为自1970年1月1日0时0分0秒起,所流失的秒数

    1.1 获取时间

    date
    
    timedatectl
    

    1.2 打印纪元时

    date +%s        #打印纪元时
    
    date --date "Wed Aug 14 17:27:47 CST 2019" +%s          #将某个时间转化为纪元时
    
    date --date "Aug 14 17:27:47 CST 2019" +%A          #知道某个时间是星期几
    

    1.3 格式化输出的时间

    参数 描述
    %% 显示字符%
    %a 星期几的缩写(Sun..Sat)
    %A 星期几的完整名称(Sunday...Saturday)
    %b/%h 月份的缩写(Jan..Dec)
    %B 月份的完整名称(January..December)
    %c 日期与时间。只输入date指令也会显示同样的结果
    %C 世纪(年份除100后去整) [00-99]
    %d 日期(以01-31来表示)。
    %D 日期(含年月日)。
    %e 一个月的第几天 ( 1..31)
    %F 日期,同%Y-%m-%d
    %g 年份(yy)
    %G 年份(yyyy)
    %H 小时(00..23)
    %I 小时(01..12)
    %j 一年的第几天(001..366)
    %k 小时( 0..23)
    %l 小时( 1..12)
    %m 月份(01..12)
    %M 分钟(00..59)
    %n 换行
    %N 纳秒(000000000..999999999)
    %p AM or PM
    %P am or pm
    %r 12小时制时间(hh:mm:ss [AP]M)
    %R 24小时制时间(hh:mm)
    %s 从00:00:00 1970-01-01 UTC开始的秒数
    %S 秒(00..60)
    %t 制表符
    %T 24小时制时间(hh:mm:ss)
    %u 一周的第几天(1..7); 1 表示星期一
    %U 一年的第几周,周日为每周的第一天(00..53)
    %V 一年的第几周,周一为每周的第一天 (01..53)
    %w 一周的第几天 (0..6); 0 代表周日
    %W 一年的第几周,周一为每周的第一天(00..53)
    %x 日期(mm/dd/yy)
    %X 时间(%H:%M:%S)
    %y 年份(00..99)
    %Y 年份(1970…)
    %z RFC-2822 风格数字格式时区(-0500)
    %Z 时区(e.g., EDT), 无法确定时区则为空
    # date '+%Y-%m-%d'
    2017-01-29
    # date +%Y-%m-%d
    2017-01-29
    # date +%m/%d/%y
    01/29/17
    # date "+%Y-%m-%d %H:%M:%S"
    2017-01-29 10:57:02
    

      实际应用(shell中时间的计算必须要先将时间格式化成字符串):

    # date -d now
    Sun Jan 29 10:46:07 CST 2017
    # date -d 'next monday'
    Mon Jan 30 00:00:00 CST 2017
    # date -d yesterday +%Y%m%d
    20170128
    

    1.4 测量一组命令所消耗的时间

    #!/bin/bash
    start=$(date +%s)
    commands;
    statements;
    end=$(date +%s)
    diffenence=$((end - start))
    echo time taken to execute commands is $diffenence seconds.
    

    time 命令是统计时间的最简单方式

    延时

    #!/bin/bash
    echo count:
    tput sc
    #循环40秒
    for count in `seq 0 40`
    do
        tput rc
        tput ed
        echo -n $count
        sleep 1
    done
    

    变量使用了seq命令生成一系列数字
    使用tput sc存储光标位置
    通过tput rc恢复光标位置
    每次循环中,通过tput rc恢复光标位置,使用tput ed清除从光标到行尾之间的所有内容,然后在终端中打印出新的count值,sleep可以使脚本在每次的循环中延迟1秒

    相关文章

      网友评论

          本文标题:shell时间获取及延时

          本文链接:https://www.haomeiwen.com/subject/iedrsctx.html