2017-05-25 64 views
0

我正在嘗試創建一個bat或shell腳本,讓我檢查我的plink連接是否死機或無響應,然後終止服務並重新啓動它。那可能嗎?死後恢復plink服務

我和我的朋友遇到的問題是,我們似乎無法檢查進程是否已經死亡,現在我們的解決方案是使用超時。 這有點浪費時間,因爲連接可能會死亡,誰知道誰會知道它有多長時間,即使它完美無缺,也可能會死亡。

:LOOP 
START CMD /C "title connection && plink sap" > data 
timeout /t 30 
START CMD /C "taskkill /fi "Status eq RUNNING" /fi "WindowTitle eq connection*" /im "cmd.exe && exit" 
timeout /t 5 
GOTO LOOP 
+0

您應該使用PowerShell和一些SSH庫(如SSH.NET)來完成。這超出了批處理文件的好處。 –

回答

0

我們發現了一個部分解決方案,可以解決每次我們通過循環時都要終止任務的問題。 它檢查過程響應,它就會死亡,這是每10秒

START CMD /C "title connectionSAPB1PLINK && plink sap" 
:LOOP 
timeout /t 10 
taskkill /f /fi "STATUS eq NOT RESPONDING" /fi "WindowTitle eq connectionSAPB1PLINK*" 
tasklist /fi "WindowTitle eq connectionSAPB1PLINK*" /FO "csv" | find /i "cmd.exe" > nul 2>&1 
echo "%errorlevel%" 
if "%errorlevel%" == "0" (GOTO LOOP) else (START CMD /C "title connectionSAPB1PLINK && plink sap" && tasklist /v && GOTO LOOP)