1. 程式人生 > >【每天一個Linux命令】08. Linux中time命令的用法

【每天一個Linux命令】08. Linux中time命令的用法


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 :  
這個時間代表的是sleep執行在使用者態的cpu時間
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