1

Ниже приведен код моего скрипта:

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 ответ1

0

Мои тесты показывают, что когда bash на удаленной стороне получает exit , он ожидает завершения своей работы. Это должно изменить поведение:

./voltdb start &
disown $!

В соответствии с этим ответом у вас все будет в порядке, если только процесс не попытается прочитать стандартный ввод или записать стандартный вывод. В этом случае вы можете исследовать nohup или tmux (или screen).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .