2017-05-25 43 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)