Batch file 当CPU使用率较高时,如何通过批处理文件重新启动服务器上的某些特定服务?

Batch file 当CPU使用率较高时,如何通过批处理文件重新启动服务器上的某些特定服务?,batch-file,Batch File,我们有一个服务器,其中2个服务不断运行。有时这些服务消耗超过90%的CPU,例如:100%。重新启动这些服务将恢复正常的cpu使用。我需要一个脚本/批处理文件,以便它能够持续监视CPU使用情况,如果使用率很高,则重新启动这些服务 @ECHO OFF SETLOCAL :again SET "load=" for /f "skip=1" %%L in ('wmic cpu get loadpercentage') do IF NOT defined load SET load=%%L IF %lo

我们有一个服务器,其中2个服务不断运行。有时这些服务消耗超过90%的CPU,例如:100%。重新启动这些服务将恢复正常的cpu使用。我需要一个脚本/批处理文件,以便它能够持续监视CPU使用情况,如果使用率很高,则重新启动这些服务

@ECHO OFF
SETLOCAL
:again
SET "load="
for /f "skip=1" %%L in ('wmic cpu get loadpercentage') do IF NOT defined load SET load=%%L
IF %load% lss 70 GOTO wait
::
::
::
ECHO load is %load%%% - restart procedures
:wait
timeout /t 5 >nul
GOTO again
WMIC命令输出3行。第一个是简单的“loadpercentage”,可以跳过。第二个是负载百分比,放在
load
中。
如果未定义
确保任何后续行都不会更改
加载
——这就是为什么
加载
wmic
之前设置为[无]

根据所需负载检查负载是显而易见的-根据需要插入重启命令。这条消息仅供参考

超时是一种基本安排,允许作业只运行到终止。循环之间的
5
为5秒。随意改变。
>nul
抑制
超时
的倒计时

如果要使用任务计划程序控制重复,可以完全忽略此选项;如果要进行更多控制,可以使用
CHOICE

@Echo OFF

SET    "SERVICE=Themes"
SET /A "MAXUSAGE=95"
SET /A "INTERVAL=5"

:LOOP
For /F %%P in ('wmic cpu get loadpercentage ^| FINDSTR "[0-9]"') do (
    IF %%P GTR %MAXUSAGE% (
        Echo [%TIME:~0,8%] CPU Usage: %%P%% Reached the limit: %MAXUSAGE%%%
        Echo Restarting %SERVICE% ...
        SC STOP  "%SERVICE%" 1>NUL
        SC START "%SERVICE%" 1>NUL
        Echo Service restarted.
    ) ELSE (
         Echo [%TIME:~0,8%] CPU Usage: %%P%%
    )
)
Ping -n %INTERVAL% Localhost >NUL
GOTO :LOOP
输出:

[10:55:31] CPU Usage: 19%
[10:55:36] CPU Usage: 4%
[10:55:42] CPU Usage: 38% Reached the limit: 25%
Restarting Themes ...
Service restarted.
[10:55:47] CPU Usage: 23%
[10:55:52] CPU Usage: 2%
[10:55:57] CPU Usage: 16%
为了获得更高的精度,您可能希望使用以下方法检查与服务关联的可执行文件的当前CPU百分比:

wmic path Win32_PerfFormattedData_PerfProc_Process get Name,PercentProcessor
Time

我不知道该怎么办。。所以我请求帮助。。我试着用谷歌搜索,但得到了一些命令来检查cmd中的cpu使用情况。我无法超越这一点。。欢迎来到StackOverFlow,因为新会员请记住使用“接受”按钮接受答案。