Plink无法返回命令提示符

10

我尝试通过plink执行一个bash脚本。脚本大致如下:

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

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

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

该脚本放置在文件中,并使用-m参数提供给plink。

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

有什么想法可以解决这个问题吗?

3个回答

7

好的,看起来我需要将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 似乎解决了这个问题。(点赞) - andyb
4
这里是否漏掉了在“/dev/null”前加上“>”符号? - Oliver Bock
大家好,当我的远程脚本完成时,如何执行plink断开/注销操作?“plink.exe -ssh domain -pw password /home/myscript.sh > output-deploy.txt” - Jose Vieira Neto

5

plink.exe -P 端口号 -v 用户名@主机IP -pw 密码 "COMMAND >/dev/null &"

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

注意:shell命令被包含在"双引号"中


0

Plink有一个-batch参数,可以禁用所有交互提示。这可能是你在这里需要避免等待ctrl-C的东西。


1
忘了提到我已经尝试过-batch,-T,-N...没有帮助。 - user3252141

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接