網路農夫 --  Home 網路農夫 --  Home
網路農夫 --  Home
wait.....

4-2-7 time 執行時間變數

預設變數 time 與內建指令 time 是息息相關的。本變數是用來定義內建指令 time 的輸出格式及設定自動顯示 time 訊息的基本時間。所以實際上此變數有兩組設定的資料,一個是時間,另一個是輸出格式。設定的組合如下所示:

設定時間 set time = 時間
設定輸出格式 set time = ( "輸出格式" )
完全設定 set time = ( 時間 "輸出格式" )

時間的單位一般以秒計算之,假定你設定 CPU time 為 3 秒,則你每個執行時間超過 3 秒的指令,便會自動顯示出執行的時間狀態,而不需用 time 指令來執行命令。

在輸出格式上,總共有十個符號,以下便是每個符號所代表的意義:

%D 佔用系統記憶體的 unshared 平均值(單位:千位元)
%E 實際執行的消耗時間,一般又稱為 wall clock time(分:秒)
%F 分頁錯誤(page faults)數量。在此我們為你簡單地介紹分頁錯誤的產生。在 UNIX 作業系統中,記憶體的架構是以頁 page)為程序移轉的處理單位。所以一個程式或指令的執行過程有可能會因為 kernal 分頁系統的需要,被多次地載入與載出主記憶體。當處理程序找不到某個使用過的頁次時,便會產生分頁錯誤。這時便會更新使用過的頁次集資料。如果有必要的話,會到硬碟中將需要的頁次讀入。有就是說產生了越多次的分頁錯誤,就有可能會做較多次的 disk I/O 動作。越是如此則執行的效率就越差。所以你必須留意這個項目所輸出的數值。如果常常會有很多的分頁錯誤產生的話,有可能表示你的記憶體已經不夠系統使用了,應該做硬體上的投資了。
%I 程式從硬碟所讀入的資料量(單位:block)
%K unshared stack 的平均值(單位:千位元)
%M 處理程序執行期間所需的最大記憶體(physical memory) (單位:千位元)
%O 程式輸出到硬碟的資料量(單位:block)
%S kernal process 的 CPU 使用時間(單位:秒)
%U user's process 的 CPU 使用時間(單位:秒)
%P 系統使用時間的總和與實際消耗時間的百分比,也就是(%S+%U)/%E 的結果。
%W swaps 的次數
%X shared 記憶體的平均值(單位:千位元)

這十個符號你可以依照你的需要設定是否要將它輸出,以及輸出時的格式。以下我們來看一個實例:

% set time = ( 5 "Elapsed time: %E System time: %S User time: %U" )
9 % find / -name core -type f -ls
Elapsed time: 1:53 System time: 50.3 User time: 1.8

如果你不設定輸出格式的話,內建指令 time 會以 C shell 所定義的輸出格式來輸出訊息。這個格式為("%Uu %Ss %E %P% %X+%D %I+%O %F+%W")。下面是不經過設定的輸出格式:

% time find / -name Csherc -ls
(輸出部份省略)
9u 36.1s1:39 38% 0+340k 2859+663io 1250pf+0w

 

版本:Beta-2001-05 -- 網路農夫