EOF को sshpass के साथ समाप्त नहीं करना


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करता हूं तो सभी ठीक काम करते हैं।

कृपया मुझे यह बताएं कि इसे ठीक करने के लिए किन परिवर्तनों की आवश्यकता है।

जवाबों:


0

मेरे परीक्षणों से संकेत मिलता है कि जब bashरिमोट की तरफ हो जाता है exit, तो वह अपनी नौकरी (नौकरियों) के समाप्त होने का इंतजार करता है। इस व्यवहार को बदलना चाहिए:

./voltdb start &
disown $!

इस उत्तर के अनुसार आप तब तक ठीक रहेंगे जब तक प्रक्रिया मानक इनपुट से पढ़ने या मानक आउटपुट पर लिखने की कोशिश नहीं करती। इस मामले में आप अनुसंधान nohupया tmux(या screen) करना चाह सकते हैं ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.