Skip to content

进程检查

脚本文件

  • 名称检查 (progress-name)

    • progress-name
    • 说明: 根据进程名称,判断进程是否存在
  • pid检查 (progress-pid)

    • progress-pid
    • 说明: 根据进程pid,判断进程是否存在
  • 端口检查 (progress-port)

    • progress-port
    • 说明: 根据进程端口,判断进程是否存在

名称检查脚本

名称检查脚本
  • 创建bin\progress\progress-name.bat批处理文件
bat
@echo off
setlocal enabledelayedexpansion

@REM 进程名称检查
@REM 调用方式:progress-name.bat nginx.exe
@REM 返回结果:0:不存在 1:存在

set process_name=%1

for /f "tokens=1" %%a in ('tasklist /fi "imagename eq !process_name!" /nh') do (
    if %%a equ !process_name! (
       echo 1
    ) else (
       echo 0
    )
    goto :break
)
:break

endlocal

pid检查脚本

pid检查脚本
  • 创建bin\progress\progress-pid.bat批处理文件
bat
@echo off
setlocal enabledelayedexpansion

@REM 进程pid检查
@REM 调用方式:progress-pid.bat pid
@REM 返回结果:0:不存在 1:存在

set process_pid=%1
set status=0

for /f "tokens=2" %%i in ('tasklist /FI "PID eq %process_pid%" ^| find /i "%process_pid%"') do (
    
    if %%i equ !process_pid! (
       set status=1
       goto :break
    )
    
)
:break
echo !status!

endlocal

端口检查脚本

端口检查脚本
  • 创建bin\progress\progress-port.bat批处理文件
bat
@echo off
setlocal enabledelayedexpansion

@REM 进程端口检查
@REM 调用方式:progress-port.bat 80
@REM 返回结果:0:不存在 1:已存在

set process_port=%1
set status=0

for /f "tokens=2" %%a in ('netstat -ano ^| findstr /R "\<0.0.0.0:%process_port%\>"') do (

    if "%%a" equ "0.0.0.0:!process_port!" (
        set status=1
        goto :break
    ) 

)
:break

echo !status!

endlocal

脚本调用

  • 进程名称

    • 调用方式:progress-name.bat nginx.exe
    • 返回结果:0不存在 1存在
  • 进程pid

    • 调用方式:progress-pid.bat pid
    • 返回结果:0不存在 1存在
  • 进程端口

    • 调用方式:progress-port.bat 80
    • 返回结果:0不存在 1存在