【发布时间】:2016-01-26 00:32:51
【问题描述】:
Scala ProcessBuilder 使用底层的 Java ProcessBuilder,它有自己的空白处理例程,可以中断原本在 shell 上工作的 SSH 命令。我正在尝试获取 Perl 反引号和 system() 行为,其中解释器运行底层 shell 并执行 shell 命令。 Java/Scala 有类似的东西吗?
我正在尝试这个,具体来说:
ssh REMOTE_SERVER '/usr/bin/tail -n 25 /var/log/messages'
/usr/bin/tail 是命令的正确路径,请仔细检查。
从服务器获取最新的日志消息。它在 shell 上工作正常,但它在没有此类文件或目录的 ProcessBuilder 上中断。显然 ProcessBuilder 以某种方式引用或转义了命令并破坏了它。
提前感谢您的任何想法。
【问题讨论】:
-
Java ProcessBuilder 不会隐式使用 shell 来运行命令。如果要通过 PB 使用 shell 语法运行命令,则必须显式调用 shell。有关示例,请参见 stackoverflow.com/questions/3776195/…。
标签: java linux scala shell ssh