zoukankan      html  css  js  c++  java
  • date、sleep和usleep命令

    bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html


    1.1 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 year (001..366)

    %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@xuexi ~]# date +%F
    2016-09-25
    
    [root@xuexi ~]# date +"%F %T"     # 有空格需要使用双引号或引号来分隔
    2016-09-25 10:48:34
    
    [root@xuexi ~]# date +"%Y-%m-%d %H:%M:%S"
    2016-09-25 10:47:49

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

    # 以下3个命令等价
    date -d "3 days ago" +%F
    date -d "-3 days" +%F
    date -d "now  - 3 days" +%F

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

    # 以下两条命令等价
    date -d "2018-02-19 3 days ago" +%F
    date -d "2018-02-19 - 3 days" +%F

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

    #!/bin/bash
    src_date="2018-05-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

    1.2 sleep和usleep

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

    sleep 5

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

    sleep 0.5

    表示休眠半秒钟。

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

    usleep 1000

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

  • 相关阅读:
    AMR转换MP3 linuxCentOS 版(不管任何语言可以使用shell命令在linux执行转换语句)
    MySql 入门——日期计算
    javascript深度剖析之 【 var 关键字】。
    javascript动画浅析。
    javascript之this关键字浅析。
    javascript【AMD模块加载器】浅析V3(添加CSS加载功能,重构内部流程)
    html5 canvas 自制小游戏系列之 【贪吃蛇】。
    javascript设计模式简单介绍之【工厂模式】
    javascript【AMD模块加载器】浅析
    javascript【AMD模块加载器】浅析V2(整合DOM ready)
  • 原文地址:https://www.cnblogs.com/f-ck-need-u/p/7427262.html
Copyright © 2011-2022 走看看