【问题标题】:sshj executing script using nohupsshj 使用 nohup 执行脚本
【发布时间】:2014-01-10 04:59:29
【问题描述】:

我需要通过 sshj 执行一个 shell 脚本并在不等待脚本完成的情况下断开连接。该脚本可能需要很长时间才能完成,因此我将创建额外的 Java 代码来定期检查脚本的结果。如何在不等待 shell 脚本完成的情况下断开 sshj 会话?

【问题讨论】:

    标签: java ssh jsch sshj


    【解决方案1】:

    & 结束您的命令。示例:

    nohup /usr/bin/longRunningProcess &
    

    一旦提交该命令(例如,提交命令然后调用Command.join()),您可以断开连接,longRunningProcess 将继续在后台运行。另一件需要担心的是命令的输出。您必须将stdoutstderr 重定向到其他地方,例如/dev/null 的文件。因此,该命令将如下所示:

    nohup /usr/bin/longRunningProcess > /dev/null 2>&1 &
    

    Java 代码类似于:

    SSHClient client = ...
    Session session = ...
    Command command = session.exec(yourCommand);
    
    // Wait for command to be submitted
    command.join();
    
    // Do some error checking by checking command.getExitStatus()
    ...
    
    // Disconnect
    session.close();
    client.close();
    

    【讨论】:

      猜你喜欢
      • 2014-07-07
      • 2011-01-12
      • 1970-01-01
      • 2013-08-10
      • 1970-01-01
      • 2015-07-21
      • 1970-01-01
      • 1970-01-01
      • 2021-01-11
      相关资源
      最近更新 更多