如何检测特定应用程序未使用的时间 CPU?
How to detect the amount of time that specific application hasn't been using CPU?
我正在尝试通过用户界面(使用 TestStack.White)自动化一个第三方应用程序。但有时程序会冻结,因为它在那段时间试图加载一些东西,它也处于 运行 阶段......所以我无法通过检查状态(不是 responding/running)来检测它命令杀死它并重新启动它。然而,在那段时间里 CPU 使用量为零,所以我在想我可以在该应用程序的 CPU 使用量为零时计时吗,如果它是零,让我们说 5 分钟重新启动应用程序。
注意:应用程序 运行 在 Windows 服务器上
提前致谢
可以使用 typeperf:
仅实时 (AFAIK) 测量 CPU 使用情况
@echo off
:check
for /f "delims=, tokens=2 skip=2" %%a in ('^
typeperf "\Process(EXENAME_WITHOUT_EXTENSION)\%% Processor Time" -si 300 -sc 1^
') do (
set cpu=%%~a
goto break
)
:break
if not %cpu:~0,2%==0. goto check
restart_the_process......
EXENAME_WITHOUT_EXTENSION
例如Explorer
-si 300
表示300秒或5分钟
- 示例代码假定点作为十进制分隔符
我正在尝试通过用户界面(使用 TestStack.White)自动化一个第三方应用程序。但有时程序会冻结,因为它在那段时间试图加载一些东西,它也处于 运行 阶段......所以我无法通过检查状态(不是 responding/running)来检测它命令杀死它并重新启动它。然而,在那段时间里 CPU 使用量为零,所以我在想我可以在该应用程序的 CPU 使用量为零时计时吗,如果它是零,让我们说 5 分钟重新启动应用程序。
注意:应用程序 运行 在 Windows 服务器上
提前致谢
可以使用 typeperf:
仅实时 (AFAIK) 测量 CPU 使用情况@echo off
:check
for /f "delims=, tokens=2 skip=2" %%a in ('^
typeperf "\Process(EXENAME_WITHOUT_EXTENSION)\%% Processor Time" -si 300 -sc 1^
') do (
set cpu=%%~a
goto break
)
:break
if not %cpu:~0,2%==0. goto check
restart_the_process......
EXENAME_WITHOUT_EXTENSION
例如Explorer
-si 300
表示300秒或5分钟- 示例代码假定点作为十进制分隔符