세션을 올바르게 닫는 바로 가기 (종료 입력하지 않음)가있는 종료 쉘


12

나는 매일 사용하는 많은 ssh 세션에 대해 ProxyJump 명령을 사용하고 이러한 세션에서 사용자를 많이 전환하고 exit3-4 번 연속으로 입력하는 것이 너무 재미 있지 않습니다.

나는 ssh 세션을 종료하기 위해 newline+ ~+ .를 알고 exit있지만, 그것이 원할 때처럼 amicably 종료하는지 확인해야 하지만 exit3 또는 4 번 입력하는 단일 명령 또는 바로 가기로 현재 쉘의 모든 세션을 어떻게 종료합니까? 내 경우에는 일회성 일이됩니까?


2
~.SSH 클라이언트의 연결을 끊기 만하면됩니다 (예 : 네트워크가 사라 졌을 때 유용합니다). 일반적으로 SSH 데몬은이를 인식하고 세션으로 신호를 SIGHUP보내므로 일반적으로 쉘을 종료하는 것과는 다릅니다 (그러나 쉘에서 응답을 얻을 수없는 경우 유용합니다).
Toby Speight

답변:


29

Ctrl- D많은 경우 쉘을 종료합니다. 입력하는 것보다 빠릅니다 exit Enter. 아직 모든 것을 종료 단일 명령 아니지만 잡고 Ctrl타격 D을 여러 번하는 것은 쉽고 빠릅니다. 이것이 유스 케이스에 얼마나 가치가 있는지 확실하지 않습니다.

여기 에서 자세히 논의 하십시오 .


2
다음 중지는 unix.stackexchange.com/a/182071/5132 이며 그 이후의 중지는 추가 정보입니다. (-:
JdeBP

2
CTRL + D에주의하십시오. bash에서 프롬프트에 문자를 입력 한 경우 Ctrl + D를 누르면 Enter와 같은 방식으로 실행됩니다. 즉, rm명령을 입력 하지 말고 실행하지 않으려면 CTRL + D를 누르십시오. ksh 에서이 동작을 보지 못했습니다.
Peschke

2
@Peschke 필자가 입력 한 모든 시스템에서 Ctrl + D를 사용한 적이 없습니다. 나는 당신이 묘사하는 행동을 본 적이 없습니다.
John Kugelman 19

1
@ JohnKugelman RHEL 7.5에서 bash를 사용하여 주석을 작성할 당시의 동작을 테스트하고 확인했습니다.
Peschke

3
Peschke는 vi터미널 입력 바인딩을 사용하고 있습니다.
JdeBP

5

타이핑은 ~.실제로 "중첩 된"모든 연결을 가장 깊이 닫는 트릭을 수행 합니다.

모든 쉘이 SIGHUP을 우아한 죽음으로 처리하도록 구성되어 있다면 원하는 원만한 출구로 가능합니다. Bash는 기본적으로 그렇게합니다. 당신은 쉽게 셋업 예에 의하여 여부보고에 대한 우호적 인 출구를 확인하실 수 있습니다 .bash_history당신의 깊은 세션의 파일이 제대로 후 업데이트됩니다 ~., 또는 종료에 따라 업데이트 .bash_history 파일에 bash는-ES를하지 설정하면 다음이 설정할 수 있습니다 trap상의를 ~/.bash_logout어딘가에 무언가를 쓰고 나중에 실행되었는지 확인하는 명령을 사용하여 EXIT 이벤트 (또는 ).

게다가, "현재 셸에서 모든 세션을 종료"한다는 것이 무슨 의미인지 잘 모르겠습니다. 각 대화식 bash는 하나의 세션 일 뿐이며 입력 한 명령은 항상 ProxyJump 체인의 가장 깊은 셸로만 이동합니다. "현재 쉘의 백그라운드 작업"을 의미하는 경우, bash는 ssh 데몬이 SIGHUP을 수신 할 때 모든 작업에 SIGHUP을 전송 ~.하므로 실행중인 작업이 SIGHUP에 올바르게 반응하는 경우 이러한 종료를 완벽하게 처리 할 수 ​​있어야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.