我尝试通过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也没有成功。
有关如何解决此问题的任何想法?
答案 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。