2008-10-15 80 views
8

我試圖用tasklist找出哪個進程佔用比我的CPU的x%以上(後來與taskkill殺死它。)任務列表CPU%使用率

我怎麼知道有多少百分比做了一次格式代表?

的單證說:

TASKLIST options 

/FI filter    

而一個過濾器可能是:

CPUTIME   eq, ne, gt, lt, ge, le  CPU time in the format: hh:mm:ss. 
               hh - number of hours, 
               mm - minutes, ss - seconds 

如果我嘗試

tasklist /FI "CPUTIME gt 00:00:10" 

它的工作原理。

但如果我

tasklist /FI "CPUTIME gt 90" 

事實並非如此。

我怎麼知道時間格式代表90%?還是80?

編輯:

其他問題:什麼是CPU使用時間和CPU使用率百分比之間的關係?

回答

-3

任務列表的CPUTIME是多少CPU時間(週期),因爲過程的開始已經使用的措施,所以將其轉換成百分比,這將是

(TotalProcessRuntime/CpuTime)/100 

至少,那是什麼我收集:)

+3

你能細說了?我可以使用`tasklist/v`獲得`CpuTime`的完整進程列表,但我怎樣才能獲得'TotalProcessRuntime`? – tborychowski 2013-09-11 10:10:23

14

它似乎沒有一個簡單的方法來做到這一點tasklist,所以我會建議要麼在VBScript或其他腳本語言,或使用不同的方法做到這一點。如果你限制爲批處理文件,那麼你可以使用WMIC命令來獲取正在運行的進程的列表以及它們各自的CPUTIME:

C:\> wmic path Win32_PerfFormattedData_PerfProc_Process get Name,PercentProcessorTime 

Name     PercentProcessorTime 
Idle     0 
System    0 
Smss     0 
csrss    0 
winlogon    0 
services    0 
lsass    0 

[...] 

wmiprvse    100 
wmic     0 
_Total    100 

注意,這在我的測試表明wmipsrv.exe具有100%的CPU,因爲它在執行WMI查詢時尖刺。你應該考慮在你的腳本或你最終要不斷殺死WMI服務;)

參考:
http://waynes-world-it.blogspot.com/2008/09/useful-general-command-line-operations.html
http://technet.microsoft.com/en-us/library/bb742610.aspx

+0

有沒有辦法根據PercentProcessorTime輸出來排序? – laggingreflex 2014-09-04 06:48:37