您好,登錄后才能下訂單哦!
這篇文章主要講解了“怎么在Linux中查找一個命令或進程的執行時間”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么在Linux中查找一個命令或進程的執行時間”吧!
要測量一個命令或程序的執行時間,運行:
$ /usr/bin/time -p ls
或者,
$ time ls
輸出樣例:
dir1 dir2 file1 file2 mcelog real 0m0.007suser 0m0.001ssys 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.008suser 0m0.001ssys 0m0.005s
以上命令顯示出了 ls
命令的總執行時間。 你可以將 ls
替換為任何命令或進程,以查找總的執行時間。
輸出詳解:
鴻蒙官方戰略合作共建——HarmonyOS技術社區
real
—— 指的是命令或程序所花費的總時間
user
—— 指的是在用戶模式下程序所花費的時間
sys
—— 指的是在內核模式下程序所花費的時間
我們也可以將命令限制為僅運行一段時間。參考如下教程了解更多細節:
在 Linux 中如何讓一個命令運行特定的時長
你可能注意到了, 我們在上面的例子中使用了兩個命令 time
和 /usr/bin/time
。 所以,你可能會想知道他們的不同。
首先, 讓我們使用 type
命令看看 time
命令到底是什么。對于那些我們不了解的 Linux 命令,type
命令用于查找相關命令的信息。 更多詳細信息,請參閱本指南。
$ type -a timetime is a shell keywordtime 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/hosts9 28 273 /etc/hosts0.00user 0.00system 0:00.00elapsed 66%CPU (0avgtext+0avgdata 2024maxresident)k0inputs+0outputs (0major+73minor)pagefaults 0swaps
如果你用 shell 關鍵字 time
運行相同的命令, 輸出會有一點兒不同:
$ time wc /etc/hosts9 28 273 /etc/hosts real 0m0.006suser 0m0.001ssys 0m0.004s
有時,你可能希望將系統資源使用情況輸出到文件中而不是終端上。 為此, 你可以使用 -o
選項,如下所示。
$ /usr/bin/time -o file.txt lsdir1 dir2 file1 file2 file.txt mcelog
正如你看到的,time
命令不會顯示到終端上。因為我們將輸出寫到了file.txt
的文件中。 讓我們看一下這個文件的內容:
$ cat file.txt0.00user 0.00system 0:00.00elapsed 66%CPU (0avgtext+0avgdata 2512maxresident)k0inputs+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" lsdir1 dir2 file1 file2 mcelog0:00.00 real, 0.00 user, 0.00 sys
請注意 shell 中內建的 time
命令并不具有 GNU time 程序的所有功能。
有關 GNU time 程序的詳細說明可以使用 man
命令來查看。
$ man time
想要了解有關 Bash 內建 time
關鍵字的更多信息,請運行:
$ help time
感謝各位的閱讀,以上就是“怎么在Linux中查找一個命令或進程的執行時間”的內容了,經過本文的學習后,相信大家對怎么在Linux中查找一個命令或進程的執行時間這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。