banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

Windows下でデーモン(守護)スクリプトを実現する

最近、Windows サーバー上でプログラムを長期間実行する必要があります。プログラムが古いため、srvany.exe を使用して Windows サービスに変換することはできず、自分でデーモンスクリプトを手動で作成する必要があります。信頼性の高いデーモンスクリプトをインターネットで探しましたので、ここにメモしておきます。プロセスとポートの監視をサポートしています。

デーモンスクリプトの定義部分

@echo off

:: 監視間隔(秒単位)
set _interval=5

:: 監視するプロセス名
set _processName = プロセス名

:: 監視するプロセスの起動コマンド
set _processCmd=C:\xxxx.exe

:: 監視するプロセスの起動完了までの予想時間(秒単位)
set _processTimeout=10

:: 監視するプロセスがリッスンするポート
set _port=8080

:: プロセスのユーザー名(通常は Administrator)
set _username=Administrator

実行部分

@echo off

set /a isAlive=false

:: プロセス名での監視
::tasklist /FI "username eq %_username%" | find /C "%_processName%" > temp.txt
::set /p num= < temp.txt
::del /F temp.txt

:: ポートのリッスン状態での監視
netstat -an | find /C "0.0.0.0:%_port%" > temp.txt
set /p num= < temp.txt
del /F temp.txt

if "%num%" == "0" (
start %_processCmd% | echo % time% に %_processName% を起動します。
choice /D y /t %_processTimeout% > nul
)

if "% num%" NEQ "0" echo 起動済み

::ping -n %_interval% 127.1>nul
choice /D y /t %_interval% >nul

goto LOOP

Script 方式で起動し、CMD ウィンドウを非表示にする

set ws=WScript.CreateObject("WScript.Shell")
ws.Run "guard.bat",0

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。