plink不会返回命令提示符

时间:2014-01-30 12:21:02

标签: bash plink

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

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

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

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

脚本放在一个文件中,并使用-m参数

指定给plink

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

有关如何解决此问题的任何想法?

3 个答案:

答案 0 :(得分:5)

好吧,似乎我不得不从终端分离stdout / err。 在正常的终端,这无关紧要,但plink因此而处于“忙碌”状态。

因此,在我的bash脚本(执行命令)中,我不得不改变:

./ bin / process“process.cfg”&

为:

./ bin / process“process.cfg”/ dev / null 2>& 1&

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

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:0)

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