Linux命令之time

    對命令和腳本進行計時測試 

grep 用的時間
  # time grep 1325045900 /data/squid/log/access.log

   real    0m0.081s
   user    0m0.035s
   sys     0m0.046s

tail 用的時間
  # time tail -500 /data/squid/log/access.log

   real    0m0.102s
   user    0m0.002s
   sys     0m0.010s

awk 用的時間
  # time awk '/1325045900/' /data/squid/log/access.log

   real    0m4.155s
   user    0m4.101s
   sys     0m0.049s
----------------------------------------------------------------------------------ide

【命令】time — 執行命令並計時 函數

【格式】time [-p] command [arguments...] 測試

【說明】 ui

執行命令行"command [arguments...]",命令行執行結束時在標準輸出中打印執行該命令行的時間統計結果,其統計結果包含如下數據:spa

1)實際時間(real time): 從command命令行開始執行到運行終止的消逝時間;操作系統

2)用戶CPU時間(user CPU time): 命令執行完成花費的用戶CPU時間,即命令在用戶態中執行時間總和;.net

3)系統CPU時間(system CPU time): 命令執行完成花費的系統CPU時間,即命令在覈心態中執行時間總和。命令行

其中,用戶CPU時間和系統CPU時間之和爲CPU時間,即命令佔用CPU執行的時間總和。實際時間要大於CPU時間,由於Linux是多任務操做系統,每每在執行一條命令時,系統還要處理其它任務。blog

另外一個須要注意的問題是即便每次執行相同命令,但所花費的時間也是不同,其花費時間是與系統運行相關的。it

例1:

            1. # time date
            2. Sun Mar 26 22:45:34 GMT-8 2006
            3. 
            4. real    0m0.136s
            5. user    0m0.010s
            6. sys     0m0.070s
            7. #

在例1中,執行命令"time date"(見第1行)。系統先執行命令"date",第2行爲命令"date"的執行結果。第3-6行爲執行命令"date"的時間統計結果,其中第4 行"real"爲實際時間,第5行"user"爲用戶CPU時間,第6行"sys"爲系統CPU時間。以上三種時間的顯示格式均爲 MMmNN[.FFF]s。

在例1中,CPU時間 = 用戶CPU時間 + 系統CPU時間 = 0m0.010s + 0m0.070s = 0m0.080s,實際時間大於CPU時間,說明在date命令運行的同時,還有其它任務在運行。

【參數說明】

-p 以POSIX缺省的時間格式打印時間統計結果,單位爲秒。詳細的輸出格式見例2。

例2:

            1. # time -p date

            2. Wed Mar 27 00:33:11 GMT-8 2006

            3. real 0.11

            4. user 0.00

            5. sys 0.02

            6. #

 

在例2中,一樣執行命令"time date"(見第1行)。系統先執行命令 "date",第2行爲該命令的執行結果。第3-5行爲執行命令"date"的時間統計結果。注意本例的時間格式與例1中的時間格式差異,使用-p 參數後的時間顯示格式爲NN.FF,其單位爲秒。

【相關環境變量說明】

TIMEFORMAT 自定義輸出的時間格式。

咱們也能夠經過環境變量TIMEFORMAT來自定義輸出的時間格式[1]。格式中使用和標準C中的函數printf一致的轉義符,以及使用如下的轉義序列來指定輸出的時間格式:

%[prec][l][RUS]

其中,選項prec爲指定時間精度,即小數點後面的位數;選項l表示使用分秒(具體格式爲:MMmNN[.FFF]s)的格式;最後一個字符表示時間的類型,其中R表示實際時間,U表示用戶CPU時間,S表示系統CPU 時間,它們的單位均爲秒。

time命令缺省輸出的時間格式同 TIMEFORMAT=$'/nreal/t%3lR/nuser/t%3lU/nsys/t%3lS'。

使用-p參數的time命令輸出的時間格式同 TIMEFORMAT=$'real %2R/nuser %2U/nsys %2S'。

例3:

            1. # export TIMEFORMAT=$'real %2R/nuser %2U/nsys %2S'

            2. # time date

            3. Wed Mar 27 00:52:03 GMT-8 2006

            4. real 0.04

            5. user 0.00

            6. sys 0.01

            7. #

比較例2和例3顯示結果,很容易發現例3雖然沒有使用參數-p,但其輸出的結果和例2如出一轍。

固然,咱們也能夠修改成任何本身喜歡的時間格式。

例4:

            1. # export TIMEFORMAT=$'/nHello, ThinkerABC!/nreal time :       %lR/nuser CUP time :   %lU/nsystem CPU time : %lS'

            2. # time date

            3. Wed Mar 27 01:09:26 GMT-8 2006

            4.

            5. Hello, ThinkerABC!

            6. real time :       0m0.016s

            7. user CUP time :   0m0.006s

            8. system CPU time : 0m0.008s

            9. #

 

例4的第4-8行正是咱們自定義的輸出格式。

從以上介紹了三種指定時間格式的方法,即缺省的時間格式、使用參數-p的POSIX缺省的時間格式和設定環境變量TIMEFORMAT自定義的時間格式,Linux系統使用的前後順序以下:

1.參數-p的POSIX缺省時間格式;

2.環境變量TIMEFORMAT自定義的時間格式;

3.缺省的時間格式。

【退出狀態說明】

若是能執行command命令,則返回該命令的退出狀態,不然返回以下的退出狀態值:

127 命令未找到

126 命令找到,但不能執行

1-125 其它錯誤

 

轉載自:http://blog.csdn.net/thinkerABC/article/details/647272

相關文章
相關標籤/搜索