2013-12-10 83 views
1

我有一個運行一系列運行其他程序的程序的bash腳本。我將如何獲得bash腳本的cpu時間以及全部它的後代進程。在進程仍在運行的情況下查找進程及其子進程的CPU時間

我看着在/ proc/{進程ID}/STAT和問題How to calculate the CPU usage of a process by PID in Linux from C?

,但我不知道我會如何計算總的CPU時間bash腳本的所有子進程。

編輯 如果我計算了utime和stime差異在一段時間內的差異,我知道一個進程在這個時間間隔內花費的cpu時間(utime + stime)。

如何在進程仍在運行時爲所有子進程(也會創建自己的進程)添加cpu時間?

回答

2

可以使用計算它:時間

UTIME%lu個

金額,這個過程在用戶模式被調度, 在時鐘測量蜱(由的sysconf分(_SC_CLK_TCK ),其中包括 訪客時間,guest_time(運行虛擬CPU所花的時間,請參閱下文), ,以便不知道訪客時間字段的應用程序不會從他們的計算中失去該時間

STIME%lu個

量的時間,這一過程已在內核模式下被調度,在 時鐘測量蜱(由的sysconf(_SC_CLK_TCK除)。

cutime%LD

的時間量,該過程的等待換孩子已經 調度在用戶模式下,在時鐘測量蜱(除以 的sysconf(_SC_CLK_TCK)。(另請參閱倍(2 ))。這包括客人時間, cguest_time(花費的時間運行的虛擬CPU,見下文)。

cstime%LD

的時間金額,TH進程等待的孩子在內核模式下被調度爲 ,以時鐘滴答度量(除以 sysconf(_SC_CLK_TCK))。

+0

這些時間似乎不包括兒童的cpu,例如,如果bash腳本運行另一個運行java看/ proc/{bash-script-process-id}/stat似乎包含腳本的腳本java進程的CPU時間,如何獲得所有孩子的CPU時間? –

+0

你提幾次看下面,你是指cstime? – JFA

+0

在頂層腳本中,utime,cutime,stime是0,而java子進程的utime和stime是29007和192,而java子進程的cstime是0.該進程仍在運行 –

相關問題