如何用GNU time查詢Linux命令或程式的執行時間
導讀 | 在類 Unix 系統中,你可能知道一個 或程式開始執行的時間,以及一個程式執行了多久。 但是,你如何知道這個 或程式何時結束或者它完成執行所花費的總時長呢? |
在類 Unix 系統中,這是非常容易的! 有一個專門為此設計的程式名叫 GNU time。 使用 time 程式,我們可以輕鬆地測量 作業系統中命令或程式的總執行時間。 time 命令在大多數 Linux 發行版中都有預裝,所以你不必去安裝它。
要測量一個命令或程式的執行時間,執行:
$ /usr/bin/time -p ls 或者,
$ time ls 輸出樣例:
dir1 dir2 file1 file2 mcelog real 0m0.007s user 0m0.001s sys 0m0.004s $ time ls -a . .bash_logout dir1 file2 mcelog .sudo_as_admin_successful .. .bashrc dir2 .gnupg .profile .wget-hsts .bash_history .cache file1 .local .stack real 0m0.008s user 0m0.001s sys 0m0.005s
以上命令顯示出了 ls 命令的總執行時間。 你可以將 ls 替換為任何命令或程式,以查詢總的執行時間。
輸出詳解:
real —— 指的是命令或程式所花費的總時間
user —— 指的是在使用者模式下程式所花費的時間
sys —— 指的是在核心模式下程式所花費的時間
你可能注意到了, 我們在上面的例子中使用了兩個命令 time 和 /usr/bin/time 。 所以,你可能會想知道他們的不同。
首先, 讓我們使用 type 命令看看 time 命令到底是什麼。對於那些我們不瞭解的 Linux 命令,type 命令用於查詢相關命令的資訊。
$ type -a time time is a shell keyword time is /usr/bin/time
正如你在上面的輸出中看到的一樣,time 是兩個東西:
一個是 BASH shell 中內建的關鍵字
一個是可執行檔案,如 /usr/bin/time。
由於 shell 關鍵字的優先順序高於可執行檔案,當你沒有給出完整路徑只執行 time 命令時,你執行的是 shell 內建的命令。 但是,當你執行 /usr/bin/time 時,你執行的是真正的 GNU time 命令。 因此,為了執行真正的命令你可能需要給出完整路徑。
在大多數 shell 中如 BASH、ZSH、CSH、KSH、TCSH 等,內建的關鍵字 time 是可用的。 time 關鍵字的選項少於該可執行檔案,你可以使用的唯一選項是 -p。
你現在知道了如何使用 time 命令查詢給定命令或程式的總執行時間。 想進一步瞭解 GNU time 工具嗎? 繼續閱讀吧!
GNU time 程式執行帶有給定引數的命令或程式,並在命令完成後將系統資源使用情況彙總到標準輸出。 與 time 關鍵字不同,GNU time 程式不僅顯示命令或程式的執行時間,還顯示記憶體、I/O 和 IPC 呼叫等其他資源。
time 命令的語法是:
/usr/bin/time [options] command [arguments...]
上述語法中的 options 是指一組可以與 time 命令一起使用去執行特定功能的選項。 下面給出了可用的選項:
- -f, –format—— 使用此選項可以根據需求指定輸出格式。
- -p, –portability—— 使用簡要的輸出格式。
- -o file, –output=FILE—— 將輸出寫到指定檔案中而不是到標準輸出。
- -a, –append—— 將輸出追加到檔案中而不是覆蓋它。
- -v, –verbose —— 此選項顯示 time命令輸出的詳細資訊。
- –quiet – 此選項可以防止 time命令報告程式的狀態.
當不帶任何選項使用 GNU time 命令時,你將看到以下輸出。
$ /usr/bin/time wc /etc/hosts 9 28 273 /etc/hosts 0.00user 0.00system 0:00.00elapsed 66%CPU (0avgtext+0avgdata 2024maxresident)k 0inputs+0outputs (0major+73minor)pagefaults 0swaps
如果你用 shell 關鍵字 time 執行相同的命令, 輸出會有一點兒不同:
$ time wc /etc/hosts 9 28 273 /etc/hosts real 0m0.006s user 0m0.001s sys 0m0.004s
有時,你可能希望將系統資源使用情況輸出到檔案中而不是終端上。 為此, 你可以使用 -o 選項,如下所示。
$ /usr/bin/time -o file.txt ls dir1 dir2 file1 file2 file.txt mcelog
正如你看到的,time 命令不會顯示到終端上。因為我們將輸出寫到了file.txt 的檔案中。 讓我們看一下這個檔案的內容:
$ cat file.txt 0.00user 0.00system 0:00.00elapsed 66%CPU (0avgtext+0avgdata 2512maxresident)k 0inputs+0outputs (0major+106minor)pagefaults 0swaps
當你使用 -o 選項時, 如果你沒有一個名為 file.txt 的檔案,它會建立一個並把輸出寫進去。如果檔案存在,它會覆蓋檔案原來的內容。
你可以使用 -a 選項將輸出追加到檔案後面,而不是覆蓋它的內容。
$ /usr/bin/time -a file.txt ls
-f 選項允許使用者根據自己的喜好控制輸出格式。 比如說,以下命令的輸出僅顯示使用者,系統和總時間。
$ /usr/bin/time -f "\t%E real,\t%U user,\t%S sys" ls dir1 dir2 file1 file2 mcelog 0:00.00 real, 0.00 user, 0.00 sys
請注意 shell 中內建的 time 命令並不具有 GNU time 程式的所有功能。
有關 GNU time 程式的詳細說明可以使用 man 命令來檢視。
$ man time
想要了解有關 Bash 內建 time 關鍵字的更多資訊,請執行:
$ help time
就到這裡吧。 希望對你有所幫助。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2710995/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux使用time命令獲取命令執行時間Linux
- oracle查詢sql執行耗時、執行時間、sql_idOracleSQL
- Linux命令執行時間測試Linux
- 如何測試Linux命令執行時間?Linux
- cmd執行命令時:不是內部或外部命令,也不是可執行的程式
- 查詢正在執行的sql語句及該語句執行的時間SQL
- Linux基礎命令---ntpq查詢時間伺服器Linux伺服器
- linux查詢檔案或目錄命令Linux
- Linux 檢視程式啟動時間、執行時間Linux
- Linux常用命令之 查詢命令 find —— 細說 -atime,-mtime,-ctimeLinux
- 在 Linux 如何優雅的統計程式執行時間?恕我直言,你執行的可能是假 timeLinux
- python用time函式計算程式執行時間Python函式
- 關於UPDATE中關聯查詢的執行時間考慮
- HttpRuntime應用程式的執行時HTTP
- Linux設定歷史命令顯示執行時間Linux
- pgrep查詢正在執行的程式ID
- 如何在 Linux 啟動時自動執行命令或指令碼Linux指令碼
- 程式執行時間的測量
- Linux 下查詢埠號由哪個程式執行Linux
- Linux基礎命令---查詢程式idLinux
- Linux下使用timedatectl命令時間時區操作詳解Linux
- php max_execution_time執行時間問題PHP
- banq請問如何用java程式呼叫windows的執行命令JavaWindows
- LINUX 下查詢指定時間的所有檔案Linux
- Linux基礎命令---間歇執行命令watchLinux
- 計算php程式執行時間的程式PHP
- 測量程式的執行時間(二)
- 測量程式的執行時間(一)
- mysql資料庫時間型別datetime、bigint、timestamp的查詢效率比較MySql資料庫型別
- 自適應查詢執行:在執行時提升Spark SQL執行效能SparkSQL
- 監控長時間執行的查詢(監控資料庫效能的SQL ) -- 轉資料庫SQL
- 如題, 執行原生的關聯查詢使用 Laravel 的 ORM 或者 Db 如何寫呢LaravelORM
- Linux 定時執行指令碼、命令Linux指令碼
- JPA時間段查詢
- MySQL查詢時間段MySql
- 線性時間查詢
- SQL時間段查詢SQL
- linux下查詢命令的技巧Linux