하위 터미널을 종료하지 않고("screen"을 먼저 실행하지 않고) 어떻게 터미널을 닫을 수 있나요?

하위 터미널을 종료하지 않고("screen"을 먼저 실행하지 않고) 어떻게 터미널을 닫을 수 있나요?

때로는 gnome 터미널에서 애플리케이션을 실행하다가 갑자기 gnome 등을 다시 시작해야 하는 경우도 있습니다. 이 질문에 대한 답변도 유용할 것 같습니다. 그런 다음 문제가 발생하면 SSH 연결을 끊고 싶습니다.

Gnome의 터미널 트리는 다음과 같습니다:

gnome-terminal
    bash
        some-boring-process

"분리" bash( gnome-terminal또는 some-boring-processbash에서 분리하고 출력을 어딘가로 리디렉션)할 수 있습니까? 그냥 죽이면 gnome-terminal모든 bash하위 프로세스가 죽습니다.

답변1

some-boring-process현재 bash 세션에서 실행 중인 경우 :

  1. 그것을 멈추고 ctrl-zbash 프롬프트를 제공합니다
  2. 배경에 넣어bg
  3. 작업 번호를 기록해 두거나 jobs다음 명령을 사용하십시오.
  4. 이 bash 세션에서 프로세스를 분리합니다 disown -h %1(실제 작업 번호를 바꾸세요).

이는 출력을 리디렉션하는 데 아무런 영향을 미치지 않습니다. 지루한 프로세스를 시작할 때 이를 고려해야 합니다. [편집] 리디렉션하는 방법이 있는 것 같습니다.https://gist.github.com/782263

그런데 진지하게 화면을 보세요. 원격 서버에 셸이 있고 몇 달 동안 실행해 왔습니다.


다음과 같습니다.

$ sleep 999999
^Z
[1]+  Stopped                 sleep 999999
$ bg
[1]+ sleep 999999 &
$ disown -h %1

답변2

이것이 바로화면그리고멀티플렉서예. screen/tmux 세션 내에서 셸을 실행하고 원하는 대로 연결을 끊거나 다시 연결할 수 있습니다. 단일 gnome 터미널 내에서 여러 셸 세션을 실행할 수도 있습니다.

답변3

screen,tmux, 또는dtach(함께 있을 수도 있음dvtm) 둘 다 이 작업에 적합하지만 둘 중 하나를 사용하고 싶지 않은 경우 다음을 활용할 수 있습니다.nohup.

답변4

어쨌든 끝내고 싶은 일을 시작하면(시스템 재시작 외에), nohup그것을 사용하고 백그라운드에서 실행합니다. 화면 등과 달리 프로세스에 다시 연결할 수 없습니다. 그러나 다른 곳으로 리디렉션되지 않는 한 모든 출력은 에서 찾을 수 있습니다 nohup.out.

screen나는 프로세스의 터미널을 전환하고 싶을 때 이것을 사용합니다. 예를 들어 집/직장에서 하나의 프로세스를 시작하고 다른 프로세스로 전환하는 경우입니다. 다른 터미널 세션 출력과 마찬가지로 결국 버퍼 상단으로 스크롤됩니다.

편집: 프로세스를 시작한 경우 이를 사용하여 프로세스가 닫힐 때 신호가 전송되지 disown않도록 할 수 있습니다.HUP

관련 정보