“X”를 클릭하거나“ctrl + d”를 사용하여 쉘을 닫는 것이 안전합니까?


11

su로 루트로 로그인 한 상태에서 "X"를 클릭하거나 "ctrl + d"를 사용하여 쉘을 닫는 것이 안전합니까? 아니면 "exit"를 입력하여 쉘을 닫는 것이 더 안전합니까? (보안 측면에서) 차이가 있습니까? 아니면 같으며 어떤 방식을 사용하든 상관 없습니다.

답변:


13

Ctrl-D 또는 exit동일합니다.

"X"를 사용하는 경우 창 관리자는 종료 신호를 쉘로 보냅니다. 결국 같은 결과를 얻었습니다. 쉘이 반응하지 않으면 일반적으로 경고 메시지가 표시되고 쉘이 강제로 종료되도록 할 수 있습니다 (와 동일 kill -9 $PID).

zsh쉘로 사용하는 경우 "X"-및 exit-method 사이에 작은 차이가 있습니다. 백그라운드 프로세스가 실행중인 경우 exit/ ctrl-D는 "작업을 실행 중입니다"라는 경고 메시지 만 처음으로 생성합니다. 두 번째로 쉘이 닫힙니다. "X"버튼으로 쉘은 경고없이 즉시 종료됩니다.


5
또한 bash에는 차이가 있습니다. Ctrl + d를 누르면 백그라운드로 처리 된 프로세스 &가 계속 실행됩니다. "X"이면 종료됩니다.
Patrick

3
@ 패트릭은 쉘이 아닌 터미널 에뮬레이터에 의존하는 것 같습니다. 에뮬레이터가 백그라운드 프로세스를 명시 적으로 종료하지 않는 한 bash는 종료 방법에 관계없이 SIGHUP을 보내지 않는다는 것을 알고 있습니다. Mac OS X 10.7.3에서 이것을 시도했습니다. 터미널은 백그라운드 프로세스를 종료하지 않지만 Xterm (X11에서 실행)은 종료합니다. 나는 그것이 Xterm의 행동인지 또는 일반적으로 X11인지의 여부를 모른다.
Chris 페이지

@ jofel 이것은 사실이 아닙니다. 내 대답을 참조하십시오.
Patrick

@Patrick이 점을 지적 해 주셔서 감사합니다. 답변을 수정하거나 삭제하겠습니다.
jofel

@ jofel nah, 삭제하지 마십시오. zsh 정보는 여전히 유용합니다. 나는 zsh의 멍청한 놈이므로 거기에 의견을 말할 수 없습니다. 그러나 그것은 좋은 지적을 가져옵니다. 따라서 다른 쉘이 다르게 행동 할 수 있고 OP가 쉘을 지정하지 않는 동안 설명 된 기본 동작은 bash에 의존한다는 점을 지적하기 위해 대답을 편집했습니다.
Patrick

4

터미널 에뮬레이터를 닫는 것은 누르는 것과 다릅니다 CTRL + D(옵션 huponexit이 설정 되지 않은 경우 ).

  • 터미널을 닫으면 ( "X"클릭) 터미널 에뮬레이터가 SIGHUP을 쉘로 보냅니다. bash는 SIGHUP을 받으면 모든 작업에 SIGHUP도 보냅니다.

  • 때 당신이 터미널을 종료 CTRL+D하거나 logout또는 exit, 모든 작업에 SIGHUP을 전송하지 않고 쉘이 종료됩니다. 이것이 기본 동작이지만 bash shopt설정 을 설정하여 변경할 수 있습니다 huponexit.

따라서 궁극적으로 목표가 백그라운드에서 실행중인 것이 없는지 확인하는 것이라면 "X"를 클릭하십시오.

.

jofel의 의견에 제공된 정보가 잘못되었습니다 (죄송합니다). 터미널 에뮬레이터는 쉘에서 어떤 작업이 실행되고 있는지 전혀 알지 못하므로 작업을 종료 할 수 없습니다.

참고 :
이 동작은 셸에 전적으로 의존합니다. 다른 쉘이 다른 기본 동작을 가질 수도 있습니다.


Ctrl+d프로세스가 PPID 1 = systemd에 의해 상속 될 때
EdiD

1

다른 점이 없다. ^ D를 누르면 'exit'을 입력하는 것과 같은 일을합니다.

$ su -
Password:
# [press ^D]
logout

예, CTRL+Dexit동일, 문제는 입력하지, 창을 닫으려면 창 관리자의 "X"를 클릭 관하여이었다 exit:-)
패트릭
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.