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毫秒。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM