以下是我的脚本代码:
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 $!
根据这个答案除非进程尝试从标准输入读取或写入标准输出,否则一切都会顺利。在这种情况下,您可能需要研究nohup
或tmux
(或screen
)。