2008-10-15 84 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