9

我试图用来tasklist找出哪个进程消耗了我的 CPU 的 X% 以上(稍后用 . 杀死它taskkill。)

我如何知道时间格式代表的百分比?

文件说:

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使用百分比有什么关系?

4

3 回答 3

18

使用任务列表似乎没有一种简单的方法可以做到这一点,所以我建议要么用 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

于 2008-10-16T04:18:13.483 回答
2

tasklist 不会告诉您进程运行了多长时间。它告诉您各种进程占用了多少 CPU 时间。要获得一个百分比(这将是一个平均百分比),您需要知道您的进程已经运行了多长时间。例如,您可以相隔 10 秒拍摄快照,减去时间,然后找到最接近数字 10 的进程 CPUTIME。(嗯,是 CPU 内核数的 10 倍?不确定......)

于 2020-06-28T16:27:32.107 回答
-3

Tasklist 的 CPUTime 是自进程开始以来已使用多少 CPU 时间(周期)的度量,因此要将其转换为百分比,它将是

 (TotalProcessRuntime / CpuTime) / 100

至少,这就是我收集到的:)

于 2008-10-15T23:27:36.360 回答