bat脚本实现条件重启

简介: 当内存占用超过85%且时间是21点-9点区间时就执行重启机器语句,1个小时轮询一次,适用于win server 2008R2
@echo off
setlocal
REM 当内存占用超过85%且时间是21点-9点区间时就执行重启机器语句,1个小时轮询一次,适用于win server 2008R2
:LOOP
REM 获取当前时间
for /f "tokens=1-3 delims=:." %%a in ("%time%") do (
set"hour=%%a"set"minute=%%b"set"second=%%c")
REM 获取当前内存占用率
for /f "skip=1 tokens=2 delims==" %%a in ('wmic OS get FreePhysicalMemory /value') do (
set"free_memory=%%a"    call :CHECK_MEM_USAGE
)
REM 判断满足条件则执行重启机器
if"%is_reboot%"=="true" (
echo 重启机器中...
    shutdown /r /f /t 60exit) else (
echo 没有满足条件。等待一个小时后进行下一次检查...
    powershell -Command"& {Write-Host '当前时间: ' -NoNewline ; Get-Date -format 'HH:mm:ss' ; Write-Host '下一次轮训检查时间是: ' -NoNewline ; $newTime = Get-Date -Date (Get-Date).AddHours(1) -format 'HH:mm:ss' ; $newTime}")
REM 等待一小时后继续检查
timeout /t 3600 >nul
goto :LOOP
:CHECK_MEM_USAGE
REM 计算内存使用率
set /a "total_memory=free_memory+0"set /a "used_memory=768-total_memory"set /a "mem_usage=(used_memory*100)/768"REM 判断内存使用率是否超过85%
if %mem_usage% gtr 85 (
    call :CHECK_TIME
if"%is_reboot%"=="true" (
set"is_reboot=true"    )
)
exit /b
:CHECK_TIME
REM 判断当前时间是否在晚上9点到凌晨9点之间
if %hour% lss 9 (
set"is_reboot=true") elseif %hour% equ 9 (
if %minute% leq 59 (
set"is_reboot=true"    ) else (
set"is_reboot=false"    )
) elseif %hour% geq 21 (
set"is_reboot=true") else (
set"is_reboot=false")
exit /b
exit /b
目录
相关文章
|
Windows
电脑win系统开机自动运行批处理、脚本等的方法/开机自动执行bat脚本
电脑win系统开机自动运行批处理、脚本等的方法/开机自动执行bat脚本
1061 0
|
6月前
|
分布式计算 Hadoop Java
|
7月前
|
存储 弹性计算 运维
自动修改计划任务配置文件
【4月更文挑战第29天】
43 0
|
7月前
|
Shell Linux
Linux脚本Shell脚本来实现一次性kill多个端口的进程
Linux脚本Shell脚本来实现一次性kill多个端口的进程
95 0
|
Shell
shell脚本控制程序启动停止重启
shell脚本控制程序启动停止重启
317 0
|
MySQL 关系型数据库 Linux
Linux启动/停止/重启Mysql数据库的方法
1、查看mysql版本方法一:status;方法二:select version(); 2、Mysql启动、停止、重启常用命令a、启动方式1、使用 service 启动:[root@localhost /]# service mysqld start (5.
8559 0
|
安全 Windows 数据安全/隐私保护