एसएसएच इन कमांडों के अंत में क्यों लटका हुआ है और मैं इसे कैसे बाहर कर सकता हूं?


10

मैं इसे चलाता हूं:

ssh -t -vvv -i ~/.ssh/druid-keypair -o StrictHostKeyChecking=no ubuntu@${INSTANCE_ADDRESS} <<EOI

# Setup Oracle Java
...

# Install dependencies - mysql must be built from source, as the 12.04 apt-get hangs
export DEBIAN_FRONTEND=noninteractive
sudo debconf-set-selections <<< 'mysql-server-5.5 mysql-server/root_password password diurd'
sudo debconf-set-selections <<< 'mysql-server-5.5 mysql-server/root_password_again password diurd'
sudo apt-get -q -y -V --force-yes --reinstall install mysql-server-5.5

echo "ALL DONE with druid environment setup!"
exit
EOI

नोट: मैंने ssh में और बिना -t की कोशिश की है।

-Vvv से डिबग आउटपुट यह है:

...
ldconfig deferred processing now taking place
ALL DONE with druid environment setup!
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0

और फिर प्रक्रिया हमेशा के लिए वहां बैठ जाती है। Ssh कमांड समाप्त क्यों नहीं होगी? मैंने -t और without के साथ कोशिश की है, और मैंने बाहर निकलने के साथ और बिना कोशिश की है। इससे कोई फर्क नहीं पड़ता :(

अपडेट: जब मैं स्क्रिप्ट के अंत में 'जॉब' टाइप करता हूं, तो मैं देखता हूं:

JOBS:
[1]-  Running                 nohup bin/zookeeper-server-start.sh config/zookeeper.properties 2>&1 > /dev/null &
[2]+  Running                 nohup bin/kafka-server-start.sh config/server.properties 2>&1 > /dev/null &

मैं इन सेवाओं को कैसे चला सकता हूं और अभी भी एक ssh सत्र है जो समाप्त होता है?

अद्यतन: मैं अब इन प्रक्रियाओं को मैन्युअल रूप से अक्षम करता हूं बात अभी भी बाहर नहीं निकलती है। डब्ल्यूटीएफ मेट?

अद्यतन: जब लाइन को लाइन से निष्पादित करते हैं, तो दो कमांड CR को पकड़े बिना शेल पर नहीं लौटते हैं:

nohup bin/zookeeper-server-start.sh config/zookeeper.properties &
nohup bin/kafka-server-start.sh config/server.properties &

-Vvv (क्रिया मोड) के बजाय -q (शांत मोड) का उपयोग करने का प्रयास करें।
सितम्बर

कोई प्रभाव नहीं। -vv सिर्फ डिबग करने के लिए था।
rjurney

SSH सर्वर और हैंग होने का पता लगाने के लिए एक-एक करके इन सभी कमांड को निष्पादित करता है।
सिपाही

1
बात बात - उनमें से कोई भी लटकाओ! यह कंसोल में ठीक काम करता है।
rjurney

क्या यह काम करता है यदि आप << EOI ब्लॉक की सामग्री को "इको 1" जैसी किसी चीज़ से बदलते हैं?
एड।

जवाबों:


22

आमतौर पर, SSH टर्मिनल सत्र हैंग हो जाता है अगर अभी भी पृष्ठभूमि कनेक्शन अभी भी खुले हैं। पृष्ठभूमि कनेक्शन से, मेरा मतलब ऐसी चीजों से है:

  • X11 विंडो अग्रेषण
  • STDOUT और STDERR

उन कनेक्शनों पर एक नज़र डालें जो अभी भी आपके त्रिशंकु एसएसएच सत्र में आपके त्रिशंकु एसएसएच सत्र पर सक्रिय हैं ~#

यह हो सकता है कि आपकी स्क्रिप्ट सत्रों को खोल रही है जिसे आपने महसूस नहीं किया था। या आपके रिमोट मशीन के टर्मिनल को कॉन्फ़िगर करता है जैसे .profile(या .bashrc, आदि) इसमें कुछ हो सकता है जो एक सत्र स्थापित करता है। गुड लक शिकार!

वैसे, ओपनएसएसएच ग्राहकों द्वारा दिए गए कुछ अन्य बच अनुक्रम भी उपयोगी हो सकते हैं:

Supported escape sequences:
  ~.  - terminate connection (and any multiplexed sessions)
  ~B  - send a BREAK to the remote system
  ~C  - open a command line
  ~R  - Request rekey (SSH protocol 2 only)
  ~^Z - suspend ssh
  ~#  - list forwarded connections
  ~&  - background ssh (when waiting for connections to terminate)
  ~?  - this message
  ~~  - send the escape character by typing it twice
(Note that escapes are only recognized immediately after newline.)

एक अन्य बात, यदि आप चाहते हैं कि आपका SSH सिर्फ आपकी आज्ञाओं को चलाए और तुरंत बाहर निकल जाए - यानी, आप एक दूरस्थ टर्मिनल सत्र नहीं चाहते हैं - आप -fविकल्प का उपयोग कर सकते हैं ssh। यह SSH कनेक्शन को बैकग्राउंड जॉब के लिए बाध्य करेगा।


3
निम्नलिखित कनेक्शन खुले हैं: # 0 क्लाइंट-सेशन (t4 r0 i0 / 0 o0 / 0 fd 5/6 cc -1) यह वही है जो मुझे मिलता है। क्या इसका कोई मतलब है?
moleculezz

-fमेरे लिये कार्य करता है।
जिंगुओ याओ

मैं एक ही उद्देश्य के लिए एन के बारे में सुना है, लेकिन वह मेरे लिए काम नहीं किया!
कोस्टास

क्या एक पृष्ठभूमि प्रक्रिया को एक के रूप में गिना जाता है background connectionऔर एक disownपृष्ठभूमि प्रक्रिया हो सकती है ताकि ssh कनेक्शन लटका न हो?
the_prole
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.