From 1de8b682501189602c5da81643a9b459d55bc808 Mon Sep 17 00:00:00 2001 From: xyli Date: Tue, 14 Feb 2023 15:09:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9SshService.java=E6=96=87?= =?UTF-8?q?=E4=BB=B6=EF=BC=8C=E6=B7=BB=E5=8A=A0checkSshRun=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mpms/service/node/ssh/SshService.java | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/src/main/java/mpms/service/node/ssh/SshService.java b/src/main/java/mpms/service/node/ssh/SshService.java index 1d66aff..b702e12 100644 --- a/src/main/java/mpms/service/node/ssh/SshService.java +++ b/src/main/java/mpms/service/node/ssh/SshService.java @@ -112,4 +112,50 @@ public class SshService extends BaseOperService implements BaseDynamic return session; } + + /** + * 检查是否存在正在运行的进程 + * + * @param sshModel ssh + * @param tag 标识 + * @return true 存在运行中的 + * @throws IOException IO + * @throws JSchException jsch + */ + public boolean checkSshRun(SshModel sshModel, String tag) throws IOException, JSchException { + String ps = StrUtil.format("ps -ef | grep -v 'grep' | egrep {}", tag); + Session session = null; + ChannelExec channel = null; + try { + session = getSession(sshModel); + channel = (ChannelExec) JschUtil.createChannel(session, ChannelType.EXEC); + channel.setCommand(ps); + InputStream inputStream = channel.getInputStream(); + InputStream errStream = channel.getErrStream(); + channel.connect(); + Charset charset = sshModel.getCharsetT(); + // 运行中 + AtomicBoolean run = new AtomicBoolean(false); + IoUtil.readLines(inputStream, charset, (LineHandler) s -> { + run.set(true); + }); + if (run.get()) { + return true; + } + run.set(false); + AtomicReference error = new AtomicReference<>(); + IoUtil.readLines(errStream, charset, (LineHandler) s -> { + run.set(true); + error.set(s); + }); + if (run.get()) { + throw new LinuxRuntimeException("检查异常:" + error.get()); + } + } finally { + JschUtil.close(channel); + JschUtil.close(session); + } + return false; + } + } -- Gitee