九九国产视频_亚洲精品国产三级在线观看_很污很黄能把下面看湿的短文_69色视频日韩在线视频

Windows使用bat腳本實現軟件進程檢測(服務守護進程)

[重要通告]如您遇疑難雜癥,本站支持知識付費業務,掃右邊二維碼加博主微信,可節省您寶貴時間哦!

寫這篇文章還是前段時間因為一個守護進程的事兒,一直想著如何能處理更簡潔,有想用軟件的,有喜歡Bat的,不過不管是哪種方式,只要能解決問題才是最好的;

Windows進程監控(守護)小工具(Process Monitor)以及其他小軟件-Bat腳本實現監控進程功能

下面是記錄的一些手機bat腳本命令以及服務

批處理文件,在DOS和Windows(任意)系統中,.bat文件是可執行文件,由一系列命令構成,其中可以包含對其他程序的調用。這個文件的每一行都是一條DOS命令(大部分時候就好像我們在DOS提示符下執行的命令行一樣),你可以使用DOS下的Edit或者Windows的記事本(notepad)等任何文本文件編輯工具創建和修改批處理文件。

bat實現守護?腳本代碼:

@echo off

:run

:: 標題定義
title sanxingtest

:: 當前路徑
set strPath=%~dp0

:: 帶絕對路徑的文件名
set strFile=%strPath%%date:~0,4%%date:~5,2%%date:~8,2%.log

:: 輸出時間到文件
echo [%time%] >>%strFile%

:: 輸出計算器的進程信息到文件
:: tasklist -nh -fo csv -fi "IMAGENAME eq WeChat.exe" >>%strFile%
tasklist -fi "IMAGENAME eq WeChat.exe" >>%strFile%

:: 下面是檢查進程是否存在,不存在啟動當前路徑下的腳本文件1.bat
tasklist|find /i "WeChat.exe"
if %errorlevel%==0 (
	echo 微信已存在
) else (
	echo 微信不存在,啟動
	start  /d"C:/Program Files (x86)/Tencent/WeChat" WeChat.exe
  	
)
:: 定時10秒
choice /t 10 /d y /n >nul

goto run

效果如下:

go start實現:

:start

choice /t 10 /d y /n >nul
tasklist|find /i " WeChat.exe" 

if %errorlevel%==0 ( 
	echo 微信已存在
) else (
	echo 微信不存在,啟動
	start  /d"C:/Program Files (x86)/Tencent/WeChat" WeChat.exe
)
goto start 

小拓展

1、bat文件執行亂碼問題

解:修改編碼格式為ANSIode>

2、后臺運行bat文件

@echo off
if "%1"=="h" goto begin
start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
::下面是你的代碼。

3、linux java進程檢測

#!/bin/sh
while true;do
count=`ps -ef|grep java|grep -v grep`
if [ "$?" != "0" ];then
echo "java is running"
else
echo "java is stop..."
break
fi
sleep 10
done

4、清理垃圾??命令代碼如下:

@echo off
echo 正在清除系統垃圾文件,請稍等......
del /f /s /q %systemdrive%\*.tmp
del /f /s /q %systemdrive%\*._mp
del /f /s /q %systemdrive%\*.log
del /f /s /q %systemdrive%\*.gid
del /f /s /q %systemdrive%\*.chk
del /f /s /q %systemdrive%\*.old
del /f /s /q %systemdrive%\recycled\*.*
del /f /s /q %windir%\*.bak
del /f /s /q %windir%\prefetch\*.*
rd /s /q %windir%\temp & md %windir%\temp
del /f /q %userprofile%\cookies\*.*
del /f /q %userprofile%\recent\*.*
del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\*.*"
del /f /s /q "%userprofile%\Local Settings\Temp\*.*"
del /f /s /q "%userprofile%\recent\*.*"
echo 清除系統垃圾文件完成!
pause

5、網絡設置

@echo off
::判斷本地連接賦值a
for /f "tokens=3,4 delims== " %%i in ('ipconfig ^|findstr /r "本"') do echo %%i %%j >DNS.txt
for /f "tokens=1 delims==:" %%d in (DNS.txt) do set a=%%d
echo 請根據實際情況更改下面三行
set slection1=
set/p slection1=請輸入IP地址:
netsh interface ip set address name="%a%" source=static addr=%slection1% mask=255.255.255.0
set slection2=
set/p slection2=請輸入網關地址:
netsh interface ip set address name="%a%" gateway=%slection2% gwmetric=0
set slection3=
set/p slection3=請輸入主dns地址
netsh interface ip set dns name="%a%" source=static addr=%slection3% register=PRIMARY
set slection4=
set/p slection4=請輸入備份dns地址
netsh interface ip add dns name="%a%" addr=%slection4%
netsh interface ip set wins name="%a%" source=static addr=none
del DNS.txt
exit 改完IP后可用這個完成本機ARP的綁定:
@echo off
if exist ipconfig.txt del ipconfig.txt
ipconfig /all >ipconfig.txt
if exist phyaddr.txt del phyaddr.txt
find "Physical Address" ipconfig.txt >phyaddr.txt
for /f "skip=2 tokens=12" %%M in (phyaddr.txt) do set Mac=%%M
if exist IPAddr.txt del IPaddr.txt
find "IP Address" ipconfig.txt >IPAddr.txt
for /f "skip=2 tokens=15" %%I in (IPAddr.txt) do set IP=%%I
arp -s %IP% %Mac%
del ipaddr.txt
del ipconfig.txt
del phyaddr.txt
exit

6、調用bat時動態傳參??內容如下:

@echo off
set username = %1%
set password = %2%

start java -jar test.jar %username% %password%

7、背景顏色窗口大小設置

color 1F – 設置顏色,1F前面表示背景顏色,后面表示字體顏色,代表顏色如下:

0=黑、1=藍、2=綠、3=淺綠、4=紅、5=紫、6=黃、7=白、8=灰、9=淡藍、A=淡綠、B=淡淺綠、C=淡紅、D=淡紫、E=淡黃、F=亮白

mode con cols=100 lines=60 – 設置窗口大小,cols表示寬度,lines表示高度

windows下bat批處理實現守護進程(有日志)

實現:檢查是否有notepad,要用的話就換成自己的進程名,如果進程宕了就過會自動重啟(會在當前目錄下生成一個start.bat)

@echo off
 
set _task=notepad.exe
set _svr=c:/windows/notepad.exe
set _des=start.bat
 
:checkstart
for /f "tokens=5" %%n in ('qprocess.exe ^| find "%_task%" ') do (
if %%n==%_task% (goto checkag) else goto startsvr
)
 
:startsvr
echo %time%
echo ********程序開始啟動********
echo 程序重新啟動于 %time% ,請檢查系統日志 >> restart_service.txt
echo start %_svr% > %_des%
echo exit >> %_des%
start %_des%
set/p=.nul
echo .
echo Wscript.Sleep WScript.Arguments(0) >%tmp%/delay.vbs
cscript //b //nologo %tmp%/delay.vbs 10000
del %_des% /Q
echo ********程序啟動完成********
goto checkstart
 
 
:checkag
echo %time% 程序運行正常,10秒后繼續檢查..
echo Wscript.Sleep WScript.Arguments(0) >%tmp%/delay.vbs
cscript //b //nologo %tmp%/delay.vbs 10000
goto checkstart

這個腳本提供兩種方式守護:

一種是通過進程名,但對于進程名都是java.exe的java程序不適用;

另一種是通過netstat查找應用程序所監聽的端口是否正在被監聽。

這兩種方式可以在腳本中通過兩個冒號注釋來選擇切換。下面是設置成通過端口來守護的,當端口沒被監聽則打開一個zip文件,所以運行后會發現沒過5秒會重復打開這個zip文件,除非這個zip文件打開后會自動監聽8080端口,那當然是不可能的!腳本涉及的命令就不解釋了搜一下就知道了。

@echo off
 
::檢測時間間隔,單位:秒
set _interval=5
 
::需要守護的進程名稱
set _processName=WinRAR
 
::需要守護的進程啟動命令
set _processCmd=C:ideavim-0.32.zip
 
::需要守護的進程預估啟動完畢所需時間,單位:秒
set _processTimeout=10
 
::需要守護的進程所監聽的端口
set _port=8080
 
::進程用戶名,一般是Administrator
set _username=Administrator 
 
:LOOP
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 啟動 %_processName% 于 %time% 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

該腳本運行后會出現一個dos窗口,若覺得礙眼可以用記事本將下面保存為擴展名為.vbs的文件。其中guard.bat是上面批處理保存的文件名。兩個文件放在同一目錄下雙擊vbs文件后,守護進程就在后臺運行了,單這樣得通過資源管理器結束cmd進程才能停止守護進程。

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

根據上面的內容自己修改一個放到項目上使用:

1)可以根據參數,執行指定的程序

2)可以保存詳細的執行日志

echo off
title processWatch
cls
set d=%date:~0,10%
set d=%d: =0%
echo %d%
set logFile=.processWatch_%d:-=%.txt
echo 現在時間:%date%%time% 
echo ********程序開始啟動******** >> %logFile%
 
set runAppPath=%1
set runAppPath="C:UsersAdministratorDesktop新建文件夾Cares.AutoUpdate.exe"
set runAppFolder=''
if '%runAppPath%'=='' (goto end)
 
set _processName=''
set _processNameExt=''
::檢測時間間隔,單位:秒
set _interval=10
 
for %%a in (%runAppPath%) do (
set _processName=%%~na
set _processNameExt=%%~nxa
set runAppFolder=%%~dpa
)
goto checkstart
 
rem 以下是測試代碼
echo %_processName%
echo %_processNameExt%
echo %runAppFolder%
echo %runAppPath%
echo ====================================================
goto end
 
 
:checkstart
set d=%date:~0,10%
set d=%d: =0%
set logFile=.processWatch_%d:-=%.txt
for /f "tokens=1" %%n in ('tasklist.exe ^| find /I "%_processNameExt%" ') do ( 
if '%%n'=='%_processNameExt%' (echo 檢查進程【%_processNameExt%】正在運行 >> %logFile% && goto checkend) )
echo 檢查進程【%_processNameExt%】未在運行 >> %logFile%
 
:startApp
echo, && echo ********開始啟動程序********
echo ********開始啟動程序******** >> %logFile%
echo [%date:~0,10%%time:~0,8%] 未檢測到【%_processNameExt%】的進程,將重新啟動程序 >> %logFile%
echo [%date:~0,10%%time:~0,8%] 重新啟動程序:%runAppPath%
echo [%date:~0,10%%time:~0,8%] 重新啟動程序:%runAppPath% >> %logFile%
echo 開始執行 start "" %runAppPath% >> %logFile%
pushd %runAppFolder%
start "" %runAppPath%
popd
echo ********啟動程序完成******** && echo,
echo ********啟動程序完成******** >> %logFile%
echo, >> %logFile%
 
 
:checkend
echo [%date:~0,10%%time:~0,8%] 程序【%_processNameExt%】運行正常,%_interval%秒后繼續檢查......
choice /t %_interval% /d y /n >nul
goto checkstart
 
:end
echo end.

線上運行的windows服務有時候可能會掛掉,又不確定掛掉的原因,目前的辦法是在服務器上運行守護進程,監控服務一旦停止盡快重啟,用一個bat批處理來簡單實現此監控:

Windows服務守護進程bat批處理腳本

@echo off
title "Elasticsearch 主服務(windows 服務)"守護進程【若需停止服務請先臨時關閉此進程】
rem 定義循環間隔時間和監測的服務:
set secs=60
set srvname="es-master"
set showname="Elasticsearch 主服務"
 
echo.
echo ========================================
echo ==     查詢計算機服務的狀態,        ==
echo ==     每間隔%secs%秒種進行一次查詢  ==
echo ==     如發現其停止,則立即啟動      ==
echo ========================================
echo.
echo 此腳本監測的服務是:%showname%
echo.
 
if %srvname%. == . goto end
:chkit
set svrst=0
for /F "tokens=1* delims= " %%a in ('net start') do if /I "%%a %%b" == %srvname% set svrst=1
if %svrst% == 0 net start %srvname%
set svrst=
echo 檢測時間:%date:~0,10% %time:~0,8%
rem 下面的命令用于延時,否則可能會導致 cpu 單個核心滿載。
ping -n %secs% 127.0.0.1 > nul
goto chkit
:end 

腳本不間斷監控notepad.exe,若停止,則自動重啟,程序如下:

@echo off
 
set _task = notepad.exe
set _svr  = c:\windows\notepad.exe
set _des  = start.bat
 
:checkService
for /f "tokens=5" %%n in ('qprocess.exe ^| find "%_task%" ') do (
    if %%n==%_task% (goto checkMessage) else goto restartService
)
  
:restartService
echo %time% 
echo ********程序開始啟動********
echo 程序重新啟動于 %time% ,請檢查系統日志 >> restart_service.txt
echo start %_svr% > %_des%
echo exit >> %_des%
start %_des%
REM set /p=.nul
echo .
del %_des% /Q
echo ********程序啟動完成********
goto checkService
 
 
:checkMessage
echo %time% 程序運行正常,5秒后繼續檢查.. 
ping localhost -n 5 
goto checkService

實現批處理文件每隔一段時間運行一次

需求說明:實現雙擊一個批處理文件,每隔一個小時啟動exe文件

實現步驟:
新建一個文本文檔 run.txt
復制以下代碼到run.txt文件中
更改文件后綴txt為bat,雙擊啟動

@echo off  
set INTERVAL=3600 
:Again  
echo start server
taskkill /f /t /im demo.exe
C:
cd C:\Users\Denison\Desktop\Demo
start demo.exe
timeout %INTERVAL%
goto Again

詳細說明:就上述代碼做詳細說明

1、@echo off :關閉回顯,即關閉批處理文件在DOS中一行一行命令的顯示
2、set INTERVAL=3600 :設置間隔時間參數,單位秒,3600即一個小時
3、:Again ~ goto Again :":"是一個標簽,"goto"是一個跳轉命令,和循環的效果一樣
4、echo start server:回顯,即將echo后面的內容現在在DOS中
5、taskkill /f /t /im demo.exe:強制關閉名為demo.exe的進程
6、C::回到C盤的根目錄
7、cd C:\Users\Denison\Desktop\Demo:進入后面的路徑目錄
8、start demo.exe:運行當前目錄中的demo.exe文件
9、timeout %INTERVAL%:暫停命令 后面是上面設置的時間參數

問題未解決?付費解決問題加Q或微信 2589053300 (即Q號又微信號)右上方掃一掃可加博主微信

所寫所說,是心之所感,思之所悟,行之所得;文當無敷衍,落筆求簡潔。 以所舍,求所獲;有所依,方所成!

支付寶贊助
微信贊助

免責聲明,若由于商用引起版權糾紛,一切責任均由使用者承擔。

您必須遵守我們的協議,如您下載該資源,行為將被視為對《免責聲明》全部內容的認可->聯系老梁投訴資源
LaoLiang.Net部分資源來自互聯網收集,僅供用于學習和交流,請勿用于商業用途。如有侵權、不妥之處,請聯系站長并出示版權證明以便刪除。 敬請諒解! 侵權刪帖/違法舉報/投稿等事物聯系郵箱:service@laoliang.net
意在交流學習,歡迎贊賞評論,如有謬誤,請聯系指正;轉載請注明出處: » Windows使用bat腳本實現軟件進程檢測(服務守護進程)

發表回復

本站承接,網站推廣(SEM,SEO);軟件安裝與調試;服務器或網絡推薦及配置;APP開發與維護;網站開發修改及維護; 各財務軟件安裝調試及注冊服務(金蝶,用友,管家婆,速達,星宇等);同時也有客戶管理系統,人力資源,超市POS,醫藥管理等;

立即查看 了解詳情