Nginx与php-cgi的监控和自动重启bat

利用任务计划程序,每5分钟执行一次,避免被关闭后,没有启动。

或者改造一下,开机自启动,一直运行bat,在bat里一直循环处理。缺点要临时关闭时,得先关闭这个bat。

@echo off
REM Bat目录,有Nginx.exe与xxfpm子目录。开机启动lnk:%AppData%\Microsoft\Windows\Start Menu\Programs\Startup
rem exit /b

if not exist C:\d_SUBST mkdir C:\d_SUBST
if not exist d:\ SUBST d: C:\d_SUBST
set logFile=C:\nginxLogs\%~n0_%date:~2,2%%date:~5,2%.log
if /i "%1"=="" goto monitor
goto %1
goto batEnd

:monitor
rem xxfpm需要cmd启动,不能后台运行,比如nssm.exe运行;而nginx nssm后,不能使用nginx -s reload。
call :xxfpm
call :nginx
call :nssm xxx
call :wp-cron
echo %date% %time% End of monitoring >> %logFile%
goto batEnd

:help
echo %~nx0 可用参数 stop maintenance wp-cron
goto batEnd

:stop
%~dp0nginx.exe -s stop
timeout 2 > nul
taskkill /f /FI "IMAGENAME eq nginx.exe"
taskkill /f /FI "IMAGENAME eq xxfpm.exe"
taskkill /f /FI "IMAGENAME eq php-cgi.exe"
echo %date% %time% End of nginxStop >> %logFile%
goto batEnd

:maintenance
echo 使用配置文件:conf/maintenance*.conf、html/Maintenance.html、conf/cert/*
%~dp0nginx.exe -s stop
timeout 2 > nul
taskkill /f /FI "IMAGENAME eq nginx.exe"
taskkill /f /FI "IMAGENAME eq xxfpm.exe"
taskkill /f /FI "IMAGENAME eq php-cgi.exe"
timeout 3 > nul
cmd /c start /d %~dp0 %~dp0nginx.exe -c conf/custom/maintenance.conf
echo %date% %time% Starting maintenance >> %logFile%
goto batEnd

::findstr Success ERRORLEVEL=0, failure ERRORLEVEL=1.

:xxfpm
tasklist /FI "IMAGENAME eq php-cgi.exe" | findstr /i /c:"php-cgi.exe"
if ERRORLEVEL 1 (
  echo.
  echo === xxfpm ===
  echo %date% %time% Starting PHP FastCGI >> %logFile%
  if /i "%PHP_HOME%"=="" set PHP_HOME=C:\inetEnv\php\
  if /i "%PHP_FCGI_MAX_REQUESTS%"=="" set PHP_FCGI_MAX_REQUESTS=1000
  %~dp0xxfpm\RunHiddenConsole.exe %~dp0xxfpm\xxfpm.exe "%PHP_HOME%php-cgi.exe -c %PHP_HOME%php.ini" -n 1 -i 127.0.0.1 -p 9000
  timeout 5 > nul
  goto xxfpm
)
goto :eof

:nginx
tasklist /FI "IMAGENAME eq nginx.exe" | findstr /i /c:"nginx.exe"
if ERRORLEVEL 1 (
  echo.
  echo === nginx ===
  echo %date% %time% Starting Nginx >> %logFile%
  %~dp0nginx.exe -t
  echo.
  cmd /c start /d %~dp0 %~dp0nginx.exe
  timeout 3 > nul
  goto nginx
)
goto :eof

:nssm
tasklist /FI "IMAGENAME eq %1.exe" | findstr /i /c:"%1.exe"
if ERRORLEVEL 1 (
  echo.
  echo === start %1 ===
  echo %date% %time% nssm.exe start %1 >> %logFile%
  nssm.exe start %1
  timeout 3 > nul
  goto nssm
)
goto :eof

:wp-cron
set Console=D:\Console\
%Console%\curl.exe --ca-native --user-agent "wp-cron from %~nx0" https://blog.t725.cn/wp-cron.php?doing_wp_cron
goto :eof

:batEnd

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注