使用 sshpass 不终止 EOF

使用 sshpass 不终止 EOF

以下是我的脚本代码:

sshpass -e ssh -o "StrictHostKeyChecking no" voltdb@$DB_SERVER_IP /bin/bash << EOF
cd voltdb/bin
echo "ReInitializing VoltDB, Wait for 5second"
./voltdb init --force
sleep 5s
echo "Starting VoltDB, Wait for 20second"
./voltdb start &
sleep 20s
echo "setUpVoltDB completed"
exit
EOF
echo "After EOF"

这里./voltdb start &作为后台进程执行

当我运行整个脚本时,它会执行EOF块中的所有命令,但我从未达到echo "After EOF"

如果我发表评论,./voltdb start & line那么一切都会正常。

请指导我需要做哪些更改才能解决这个问题。

答案1

我的测试表明,当bash远程端获取时exit,它会等待其作业完成。这应该会改变行为:

./voltdb start &
disown $!

根据这个答案除非进程尝试从标准输入读取或写入标准输出,否则一切都会顺利。在这种情况下,您可能需要研究nohuptmux(或screen)。

相关内容