time
統計給定命令所花費的總時間
補充說明
time
命令是用來確定一個給定的命令需要運行多長時間。它對於測試你的腳本和命令的性能很有用。
例如,如果你有兩個不同的腳本在做同樣的工作,你想知道哪一個表現得更好,你可以用 Linux 的時間命令來確定每個腳本的執行時間。
該指令是 shell 內指令,也是一個軟件包,對於軟件包的說明在這篇文檔靠下的部分
語法
1time <指令>
參數
指令:指定需要運行的額指令及其參數。
實例
當測試一個程序或比較不同算法時,執行時間是非常重要的,一個好的算法應該是用時最短的。所有類UNIX系統都包含time命令,使用這個命令可以統計時間消耗。例如:
1$ time ls
2anaconda-ks.cfg install.log install.log.syslog satools text
3
4real 0m0.009s
5user 0m0.002s
6sys 0m0.007s
這裏的輸出會因爲使用的發行版本不同而導致展示的結果不同,比如:
1# Bash
2real 0m33.961s
3user 0m0.340s
4sys 0m0.940s
5
6# Zsh
70.34s user 0.94s system 4% cpu 33.961 total
8
9# GNU time (sh)
100.34user 0.94system 0:33.96elapsed 4%CPU (0avgtext+0avgdata 6060maxresident)k
110inputs+201456outputs (0major+315minor)pagefaults 0swaps
real
或者 total
或者 elapsed
(掛鐘時間)是指從調用開始到結束的時間。它是指從你按下回車鍵的那一刻開始,到命令完成的那一刻爲止的時間。
user - 在用戶模式下花費的CPU時間。
system 或 sys - 在內核模式下花費的CPU時間。
軟件包
接下來的部分是關於 time
軟件包提供的 /usr/bin/time
二進制可執行程序,而不是 shell 內建的 time 命令。
軟件包的語法
一些 shells(例如 bash
)有一個內置的 time
命令,提供類似的關於時間和可能的其他資源的使用信息。
要訪問真正的命令,可能需要指定其路徑名(類似於/usr/bin/time
)。
1time [options] command [arguments...]
軟件包指令參數
-f format, --format=format 指定輸出格式,可能覆蓋環境變量TIME中指定的格式。 -p, --portability 使用可移植的輸出格式。 -o file, --output=file 不將結果發送到stderr,而是覆蓋指定的文件。 -a, --append (與-o一起使用。)不覆蓋而是附加。 -v, --verbose 對程序知道的所有信息進行非常詳細的輸出。 -q, --quiet 不報告異常的程序終止(當命令被信號終止時)或非零退出狀態。
軟件包實例
使用-o
選項將執行時間寫入到文件中:
1/usr/bin/time -o outfile.txt ls
使用-a
選項追加信息:
1/usr/bin/time -a -o outfile.txt ls
使用-f
選項格式化時間輸出:
1/usr/bin/time -f "time: %U" ls
-f
選項後的參數:
參數 | 描述 |
---|---|
%E |
real時間,顯示格式爲[小時:]分鐘:秒 |
%U |
user時間。 |
%S |
sys時間。 |
%C |
進行計時的命令名稱和命令行參數。 |
%D |
進程非共享數據區域,以KB爲單位。 |
%x |
命令退出狀態。 |
%k |
進程接收到的信號數量。 |
%w |
進程被交換出主存的次數。 |
%Z |
系統的頁面大小,這是一個系統常量,不用系統中常量值也不同。 |
%P |
進程所獲取的CPU時間百分百,這個值等於 user+system 時間除以總共的運行時間。 |
%K |
進程的平均總內存使用量(data+stack+text),單位是 KB 。 |
%w |
進程主動進行上下文切換的次數,例如等待I/O操作完成。 |
%c |
進程被迫進行上下文切換的次數(由於時間片到期)。 |
參考資料
- Linux Time Command | Linuxize https://linuxize.com/post/linux-time-command/
- time(1) — Arch manual pages https://man.archlinux.org/man/time.1
- Time - ArchWiki https://wiki.archlinux.org/title/time 來源:https://github.com/jaywcjlove/linux-command
版權申明:
- 未標註來源的內容皆為原創,未經授權請勿轉載(因轉載後排版往往錯亂、內容不可控、無法持續更新等);
- 非營利為目的,演繹本博客任何內容,請以'原文出處'或者'參考鏈接'等方式給出本站相關網頁地址(方便讀者)。