腳本查看進程
⑴ 幫寫一個BAT腳本,「判斷進程是否存在,並執行相對應操作的BAT腳本」
這是一個簡單的批處理腳本示例,用於檢測特定進程是否存在,並執行相應的操作。腳本的主要邏輯是,首先檢查「ntaskldr.exe」進程是否在運行。如果存在,則輸出1(表示進程存在),否則,終止「DSMDaemon.exe」進程。
腳本的具體步驟如下:
1. 使用「@echo off」命令關閉命令回顯,使腳本運行時不會顯示每條命令。
2. 使用「:1」創建一個標簽,便於循環。
3. 使用「for /f %%i in ('tasklist') do (if /i "%%i"=="ntaskldr.exe" (echo 1 > nul) else (taskkill /f /im DSMDaemon.exe > nul))」命令行循環遍歷所有正在運行的進程,檢查是否包含「ntaskldr.exe」。如果找到,輸出1(表示進程存在),否則終止「DSMDaemon.exe」進程。
4. 使用「ping -n 6 127.0.0.1 > nul」命令模擬延遲,使腳本每隔6秒執行一次。
5. 使用「goto 1」命令使腳本回到標簽1,實現循環執行。
這個腳本主要用於自動化管理進程,確保在特定條件下正確地執行任務。它可以在系統啟動時自動運行,或者作為計劃任務的一部分定期執行。
需要注意的是,這個腳本需要有適當的許可權才能成功終止進程。此外,它假設「ntaskldr.exe」和「DSMDaemon.exe」是目標系統上的有效進程名。在實際應用中,可能需要根據具體情況進行調整。
在編寫類似的腳本時,應仔細考慮其對系統的影響,確保不會無意中導致系統不穩定或數據丟失。建議在測試環境中先進行充分測試,確保腳本按預期工作。
同時,使用批處理腳本時,應注意安全性,避免執行惡意代碼。確保腳本中使用的命令和參數是可信的,避免腳本被篡改。
⑵ grep在shell腳本中使用,判斷進程是否存在,進程不存在則重啟
在shell中,判斷一個進程是否存在,是判斷進程數量
沒有運行進程時,如下顯示,只有一條,這條就是這條命令的進程。
如果進程存在就會顯示多條進程信息,其中一條包括命令這條。
所以判斷是否存在,只要判斷數量即可,命令為
進程大於1,則進程存在正常,顯示如下:
以下是最簡單的判斷內容,判斷進程數量小於等於1,則進程不存在,然後重啟即可。
shell判斷相關參數:
需注意的坑:
grep 需要加上參數 -w ,意為精確匹配。如果不加上 -w ,判斷進程數量會不準確。
例:判斷一個名為 info.py 的腳本內容: ps -ef |grep info.py
不加 -w ,會把包括 info.py 都顯示出來,如 info_py , info 之類的。所以顯示數量遠大於實際進程數量。
所以寫腳本時必須加上 -w 參數,顯示只有 info.py 的內容。
grep其他參數參考:
腳本完成後,需添加系統定時任務。
⑶ shell腳本判斷是否有某進程在運行
1 、可以通過ps命令獲取所有的進程,然後通過awk命令提取進程名,再用grep提取相應的進程名即可。
2、參考代碼如下:
ps-aux|awk'{print$11}'|grep"^$1">/dev/null
case$?in
0)
echo"findprocess$1"
;;
1)
echo"$1isnotrunning"
;;
*)
echo"unknowerror"
esac
3、運行結果如下
⑷ windows下批處理腳本,定時檢查某一進程是否存在,若不存在則通知用戶打開此進程;若存在則退出。
@echo off
:x
tasklist /nh|find /i "進程.exe"
if ERRORLEVEL 1 (Msg %username% 進程.exe不存在,請啟動此進程。 ) else (ping -n 3 127.1>nul)
goto x
這個是相隔3秒檢測一次,檢測不到會彈出消息,檢測到則三秒後循環檢查