【问题标题】:plink won't return to command promptplink 不会返回命令提示符
【发布时间】:2014-02-22 18:00:58
【问题描述】:

我尝试通过 plink 执行一个 bash 脚本。脚本看起来像这样:

echo "@ Starting process..."
./bin/process "process.cfg" &
disown %1
echo "@ Done!"

当我在 linux 的终端中执行此脚本时,一切正常。在“完成!”之后我得到一个命令提示符(如预期的那样)。

现在,当我通过 plink 运行此脚本时,输出在“完成!”之后停止。行,但 plink 不会返回命令提示符并“挂起”,直到 +c。

脚本被放置在一个文件中,并通过 -m 参数提供给 plink

我尝试在脚本末尾添加'logout'、'exit'、'set -e',但没有帮助。在 plink 命令中添加 -batch、-T 或 -N 也没有成功。

关于如何解决这个问题的任何想法?

【问题讨论】:

    标签: bash plink


    【解决方案1】:

    好的,看来我必须从终端中分离 stdout/err。 在普通终端中,这当然无关紧要,但 plink 正因此而处于“忙碌”状态。

    因此,在我的 bash 脚本(执行命令)中,我必须进行更改:

    ./bin/process "process.cfg" &

    到:

    ./bin/process "process.cfg" /dev/null 2>&1 &

    plink 现在在 bash 脚本末尾返回正确的“完成”状态。

    【讨论】:

    • 谢谢 - 我在尝试从 Windows 托管脚本启动 Linux 托管 WebLogic 时遇到了类似的问题。将 startWebLogic.sh 的输出重定向到 /dev/null 似乎已经修复了它。 (点赞)
    • 这是在 /dev/null 之前缺少一个 '>' 吗?
    • 大家好,当我的远程脚本完成时,如何断开连接/注销? "plink.exe -ssh domain -pw 密码 /home/myscript.sh > output-deploy.txt"
    【解决方案2】:

    plink.exe -P PORT_NUM -v USERNAME@HOST_IP -pw PASSWD "COMMAND >/dev/null &"

    • & 会将您的进程移至后台
    • > /dev/null 允许您的命令通过让 stdout/stderr 输出到虚拟空设备来静默运行

    注意:shell 命令用“双引号”括起来

    【讨论】:

      【解决方案3】:

      Plink 有一个-batch 参数,可以禁用所有交互式提示。这可能是您需要在这里避免挂起直到 ctrl-C。

      【讨论】:

      • 忘了说我已经试过 -batch, -T, -N... 没有帮助。
      猜你喜欢
      • 2015-03-04
      • 1970-01-01
      • 2016-09-02
      • 1970-01-01
      • 1970-01-01
      • 2020-03-21
      • 2011-06-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多