이러한 명령 끝에 SSH가 정지되는 이유는 무엇이며 어떻게 종료합니까?


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를 사용하거나 사용하지 않고 시도했으며 출구를 사용하거나 사용하지 않고 시도했습니다. 차이가 없습니다 :(

업데이트 : 스크립트 끝에 'jobs'를 입력하면 다음이 표시됩니다.

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 세션을 계속 사용할 수 있습니까?

업데이트 : 이제 이러한 프로세스를 수동으로 제거합니다. 여전히 종료되지 않습니다. WTF 친구?

업데이트 : 한 줄씩 실행하면 두 가지 명령이 CR을 누르지 않고 쉘로 돌아 가지 않습니다.

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

-vvv (verbose 모드) 대신 -q (자동 모드)를 사용하십시오.
9 월

효과가 없습니다. -vvv는 방금 디버깅했습니다.
rjurney

서버에 SSH를 연결하고 이러한 모든 명령을 하나씩 실행하여 중단 이유를 파악하십시오.
9 월

1
그게 문제입니다-아무도 교수형에 처하지 않습니다! 이것은 콘솔에서 잘 작동합니다.
rjurney

<< EOI 블록의 내용을 "echo 1"과 같은 것으로 바꾸면 작동합니까?
에드.

답변:


22

일반적으로 백그라운드 연결이 여전히 열려 있으면 SSH 터미널 세션이 중단됩니다. 백그라운드 연결이란 다음과 같은 것을 의미합니다.

  • X11 창 전달
  • STDOUT 및 STDERR

~#중단 된 SSH 터미널 에 입력하여 중단 된 SSH 세션에서 여전히 활성 인 연결을 살펴보십시오 .

스크립트가 인식하지 못한 세션을 여는 중일 수 있습니다. 또는 원격 시스템의 터미널 구성 .profile(또는 .bashrc등)에 세션을 설정하는 무언가가있을 수 있습니다. 행운을 빕니다 사냥!

그런데 OpenSSH 클라이언트가 제공하는 다른 이스케이프 시퀀스 중 일부도 유용 할 수 있습니다.

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 client-session (t4 r0 i0 / 0 o0 / 0 fd 5/6 cc -1) 이것이 내가 얻는 것입니다. 이것이 무엇을 의미합니까?
moleculezz

-f나를 위해 작동합니다.
Jingguo Yao

나는 같은 목적으로 -n에 대해 들었지만 그게 효과가 없었습니다!
코스타스

백그라운드 프로세스는로 계산합니까 background connection하나는 수 disown백그라운드 프로세스 ssh 연결이 중단되지 않도록?
the_prole
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.