time命令常用於測量一個命令的運行時間,注意不是用來顯示和修改系統時間的(這是date命令幹的事情)。
基本介紹
- 中文名:time
- 外文名:time
- 隸屬於:linux 命令
簡述
常用參數
time [options]command [arguments...]
在命令執行完成之後就會列印出CPU的使用情況:
real 0m5.064s <== 實際使用時間(real time)
user 0m0.020s <== 用戶態使用時間(the process spent in user mode)
sys 0m0.040s <== 核心態使用時間(the process spent in kernel mode)
time命令跟上-p參數可以只列印時間數值(秒數),不列印單位。
使用示例
示例一
# time find . -name "mysql.sh"
................
real 0m14.837s
user 0m0.030s
sys 0m0.120s
註:real遠大於user加上sys,因為find需要遍歷各個目錄,需要大量的I/O操作,而磁碟I/O通常是最慢的環節,因此大部分時間find進程都在等待磁碟I/O完成。
# time find . -name "mysql.sh"
...............
real 0m0.230s
user 0m0.040s
sys 0m0.030s
註:再次運行的時候,發現real time變得很小了,應該是作業系統將剛才操作過的一些檔案快取了的緣故,因而大大減少了磁碟I/O。
# time -p find . -name "mysql.sh"
..............
real 0.15
user 0.04
sys 0.03
註:使用-p參數時,直接列印所需時間的數值,單位為秒,而不是更友好的格式,包括分鐘、秒鐘的顯示方式。
示例二
有個-f參數可以來指定統計信息的輸出格式。
# time -f "real %f\nuser %f\nsys %f\n" find . -name "mysql.sh"
-bash: -f: command not found
real 0m0.024s
user 0m0.000s
sys 0m0.000s
怪哉,不靈啊。使用type -a來看一下。使用這個shell內建命令經常會有意想不到的發現。
# type -a time
time is a shell keyword
time is /usr/bin/time
註:通過這條命令我們可以發現我們常用的time其實是一個Shell關鍵字,還有一個外部命令/usr/bin/time,它有何不同呢?
# /usr/bin/time
Usage: /usr/bin/time [-apvV] [-f format] [-o file] [--append] [--verbose]
[--portability] [--format=format] [--output=file] [--version]
[--help] command [arg...]
註:外部命令/usr/bin/time功能更強大,下面來嘗試一下。
# /usr/bin/time find . -name "mysql.sh"
..................
0.03user 0.04system 0:00.12elapsed 55%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (154major+63minor)pagefaults 0swaps
註:注意後面兩行,列印了很多信息,但看不太清楚。它有一個參數-v,可以列印得更清楚些。