재부팅 후에도 터미널 세션이 지속되도록 하는 방법이 있습니까?

재부팅 후에도 터미널 세션이 지속되도록 하는 방법이 있습니까?

OS X에는 이것이 있습니다. 이상적으로는 재부팅이 터미널의 POV에서 발생하지 않은 것처럼 나타나기를 원합니다(지금은 원격 세션을 무시하고 백그라운드 프로세스가 0이라고 가정하겠습니다). 즉, 각 터미널 탭에서 stdin, stdout, stderr(즉, 스크롤백) 기록을 보고 싶습니다.

참고: 이것은 bash 기록에 관한 것이 아닙니다. 이는 재부팅 사이에 터미널 세션을 유지하는 것에 관한 것입니다.

답변1

아니요, 적어도 gnome-terminal다른 VTE기반 에뮬레이터에서는 암시적이고 편리한 방식으로는 불가능합니다.

(물론 재부팅하기 전에 모든 탭을 명시적으로 살펴보고 "모두 선택"을 수행하여 내용을 파일에 복사하여 붙여넣고 재부팅 후 일부 뷰어를 사용하여 해당 파일을 볼 수 있습니다. 이해한다면 이것이 아닙니다. 또한 색상 및 기타 서식도 손실됩니다.)

VTE, 뒤에 있는 터미널 에뮬레이션 위젯 및 기타 많은 터미널 에뮬레이터는 기본적으로 gnome-terminal아래의 임시 파일에 대부분의 스크롤백 내용(최신 비트는 아님)을 저장합니다 . /tmp원하는 작업을 방해하는 주요 디자인 결정은 다음과 같습니다.

  • 이러한 파일은 생성 직후 연결이 해제됩니다. 이는 어떤 이유로든 터미널 에뮬레이터가 비정상적으로 종료되더라도 자동으로 제거되고 디스크 공간이 확보되도록 하기 위한 것입니다. 이를 보존하려면 파일 시스템 트리에 다시 연결하거나(가능한지 모르겠습니다) 다른 파일에 복사해야 합니다(스크롤백이 큰 경우 느린 작업이며 잠재적으로 부족할 수 있는 문제를 적절하게 처리하는 것은 말할 것도 없습니다). 디스크 공간).

  • /tmp재부팅 시 많은 배포판에 의해 파일이 지워지는 파일이 있습니다 . 대신 다른 영구 위치를 선택해야 합니다. 그렇지 않으면 부팅 스크립트와 일부 협력이 필요합니다.

  • VTE이러한 파일은 누군가가 디스크에 액세스할 경우 데이터 유출이라는 개인 정보 보호 문제를 극복하기 위해 암호화됩니다(버전 0.40 기준 ). 암호화 키는 gnome-terminal님의 메모리에서만 사용할 수 있습니다. 이러한 파일을 유지하려면 암호화 계층을 건너뛰거나(기존 개인 정보 보호 문제를 다시 가져옴) 재부팅하는 동안 적어도 일시적으로 키를 디스크에 배치해야 합니다(...어, 그 때까지). 사용자가 다시 로그인하고 gnome-terminal다시 시작합니다. 별로 나아진 것 같지 않습니다.) 개인 정보 보호에 관심이 없거나 파일 시스템의 암호화가 보장되는 경우에만 가능합니다.

해결해야 할 다른 작은 문제도 있습니다. 예를 들어 스크롤백 데이터의 마지막 비트가 포함된 이러한 파일의 불완전한 블록을 플러시하는 것입니다.

VTE당신이 찾고 있는 것을 방해하는 몇 가지 디자인 결정에 대해 간략히 설명할 수 있었으면 좋겠습니다 . 현재 설계 목표를 유지하면서 귀하의 요청을 어떻게 처리할 수 있는지 알 수 없습니다. 어쩌면 VTE의 기능 중 일부를 희생하면서 원하는 작업을 수행하는 또 다른 터미널 에뮬레이터가 있을 수도 있습니다 . 모르겠습니다.

답변2

매우 유용한 도구를 사용하는 것이 좋습니다 screen. 배울 만한 가치가 충분히 있습니다. 다른 질문에 대한 답변을 요약하면 다음과 같습니다.

.screenrc에서 사용자 정의 명령으로 기본 창을 시작할 수 있으므로 다른 세션을 복원하려는 경우 다른 .screenrc 파일을 사용하여 세션을 복원할 수 있습니다. screen -t .... 보다gnu.org 화면 매뉴얼 - 시작 파일

지속되는 터미널 세션을 유지하는 한 가지 좋은 방법은 서버에서 '스크린' 세션을 실행하는 것입니다. '스크린' 세션은 해당 서버에 다른 컴퓨터 등에 로그인할 수 있는 여러 창을 제공합니다. 서버에서 여러 개의 '스크린' 세션을 실행할 수 있습니다. 필요한 세션의 연결을 끊었다가 다시 연결할 수 있습니다. 'screen'은 구식 명령줄 키보드이지만 그것이 어떻게 작동하는지 배우고 가지고 놀아볼 가치가 있습니다. 여기에는 몇 가지 큰 장점이 있습니다.

  • 설치가 쉽고 모든 Unix(또는 cygwin)에서 실행되며 그래픽이 필요하지 않습니다(터미널 텍스트 그래픽 제외).
  • 지속적인 창 터미널 세션 제공(서버가 재부팅되지 않는 한)

* 화면 빠른 시작 *

RTFM:gnu.org 화면 사용자 매뉴얼

  • screen - 간단하게 새 세션을 생성하려면 화면을 실행하세요.
  • screen -ls - 실행 중인 스크린 세션 목록을 표시합니다.
  • screen -r 20229.pts-2.bangor - 세션에 다시 연결

그만큼* 기본적으로 화면 ESCAPE 문자는 Ctrl-a입니다 *일부 미친 루퍼가 .screenrc에서 프로세스 배경 제어를 중요하게 생각하지 않는 사람들을 위해 "escape ^Zz"로 변경하지 않는 한. 화면에서 실행 중인 경우 실제 Ctrl-a를 터미널로 가져오려면(줄의 시작 부분으로 이동) Ctrl-a Ctrl-a를 수행하면 됩니다.

  • ESCAPE c - 새 화면 창 만들기
  • ESCAPE 0 (또는 1 2 3 4 5 6 7 8 9) - 창 0 (또는 1 2 . . )으로 전환
  • ESCAPE p 또는 ESCAPE n - 이전 또는 다음 창으로 전환
  • ESCAPE " - 창 목록
  • ESCAPE h - 화면 도움말을 표시합니다.

여기에 화면 도움말 페이지, 명령줄 사용법 및 .screenrc 예제의 예를 넣은 또 다른 질문이 있습니다.

Mac 터미널과 같은 "세션 복원" 기능을 갖춘 터미널 에뮬레이터

관련 정보