通常通過進程名稱或者端口號來判斷進程是否正在運行。但是windows下進程名常常難以區分,比如有兩個python腳本程序A和B同時在執行,進程名都是python.exe。若是通過端口來區分,卻又只適用帶有端口監聽的程序,比如某進程監聽6379,可能該端口被很多程序同時監聽。怎么做到細化守護呢?只有把要監聽的程序打包成exe程序,windows一般以exe程序名作為進程名,每個程序分別取不同的exe名稱即可。
守護腳本如下:
@echo off
echo superVisord start...
for /f "tokens=1,2 delims==" %%i in (config.txt) do (
set %%i=%%j
echo 變量%%i值為%%j
tasklist | find /i %%i.exe || start "" cmd /k %%j
)
echo superVisord stop...
exit
配置文件config.txt里面是要監聽的程序名稱和執行命令路徑:
pay_exe=python E:\work\pay_exe.exe
可以將守護腳本加入開機/計划任務,或者修改為循環執行每n秒檢測一次。
