【每天一個Linux命令】08. Linux中time命令的用法
阿新 • • 發佈:2019-02-19
Linux中time命令,我們經常用來計算某個程式的執行耗時(real),使用者態cpu耗時(user),系統態cpu耗時(sys)
time命令最常用的使用方式就是在其後面直接跟上命令和引數:
time <command> [<arguments...>]
舉個栗子1:
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ time sleep 2
real 0m2.005s
user 0m0.001s
sys 0m0.002s
小解其意:
real 0m2.005s :sleep這個程式執行耗時為0m2.005s
user 0m0.001s :
sys 0m0.002s : 這個時間代表的是sleep執行在核心態的cpu時間。
使用者態(User Mode):
在使用者態,程式碼不具備直接訪問硬體或者訪問記憶體的能力,而必須藉助作業系統提供的可靠的,底層的APIs來訪問硬體或者記憶體。由於這種隔離帶來的保護作用,使用者態的程式碼崩潰(Crash),系統是可以恢復的。我們大多數的程式碼都是執行在使用者態的。
核心態(Kernel Mode):
在核心態,程式碼擁有完全的,不受任何限制的訪問底層硬體的能力。可以執行任意的CPU指令,訪問任意的記憶體地址。核心態通常情況下,都是為那些最底層的,由作業系統提供的,可信可靠的程式碼來執行的。核心態的程式碼崩潰將是災難性的,它會影響到整個系統。
為什麼要區分Kernel Mode 和 User Mode:
隔離保護,使得系統更穩定。
好,講完使用者態和核心態之後,我們來看user time,說過了,這個指的是程式foo執行在使用者態的cpu時間,cpu時間不是牆上的鐘走過的時間,而是指CPU工作時間。
舉個栗子2:
#time -p 不顯示單位
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ time -p sleep 2
real 2.00
user 0.00
sys 0.00