GNU 화면을 재부팅 후에도 유지


18

GNU 화면을 많이 사용하고 있습니다. 서버를 재부팅 할 때마다 모든 세션을 잃어 버리는 것이 매우 귀찮습니다 (미리 알더라도 모든 것을 다시 설정해야 함).

화면을 재부팅해도 살아남을 수있는 가능성을 웹에서 검색했지만 나에게 적합한 것은 없습니다. 내가 찾은 몇 가지 방법과 결함이 있습니다.

  • CryoPID : 2005 년부터 화면 지원이 포함되어 유망한 것으로 보인다
  • DMCTP : setuid ()에 문제가 있으며 저에게 효과가 없었습니다 (매우 열심히하지 않았다는 것을 인정합니다)
  • 세션을 처음부터 다시 작성하려는 일부 스크립트 당신은 여전히 ​​역사를 잃어 버리고 환경 변수가 올바르게 설정되지 않았다고 생각합니다 (내가 시도했을 때 모든 세션을 가져 오지 못했습니다)

어쩌면 누군가 더 나은 공정 냉동고를 알고 있습니까? 이것이 가장 유망한 방법 인 것 같습니다.


어쩌면 당신은 대신 재부팅 :-) 나는 긴 DMCTP를 사용하여 기억, 오래전의 최대 절전 모드해야하며 일했다 (IIRC,하지만 난 ... 잘 모르겠어요)
나태

1
대부분의 경우 재부팅을 강제하는 커널 업데이트 또는 하드웨어 교체입니다. (어쨌든 나에게 달려 있지 않다 ...)-DMCTP : 화면을 재 컴파일하지 않고 작동시키는 방법에 관심이있을 것이다 (인터넷에서 제안 된대로).
fuenfundachtzig

1
화면 대신 tmux를 사용하고 있으며 세션 스크립트를 작성하는 것이 더 쉽다는 것을 알았습니다. 세션을 "저장"하지는 않지만 레이아웃을 수행하고 클라이언트에 '키 스트로크'를 보내도록 명령을 tmux에 쉽게 보낼 수 있으므로 필요한 경우 디렉토리를 변경하고 응용 프로그램을 시작할 수 있습니다. 나는 당신도 화면에서 그것을 할 수 있다고 확신하지만, tmux를 사용하면 더 쉬워 보입니다

답변:


13

원하는 방식으로 화면 세션을 저장할 수있는 방법이 없습니다. 내가 한 것은 다음으로 가장 좋은 방법이었습니다. 서버에 연결하고 원하는 방식으로 리그를 설정하도록 스크립트 된 autossh입니다.

그것을 사랑하십시오.

로컬 연결이 끊어졌습니다. 잠시 기다렸다가 다시 나타나고 내 작업이 있습니다 (중첩 화면 사용). 서버가 다운되거나 재부팅되고 기다렸다가 기본 위치로 돌아 왔습니다. 이것은 내가 원하는 연속성의 느낌을줍니다.

어쨌든, 나는 몇 년 전에 화면 목록 에서이 정확한 질문을했습니다.

요약 : 스크린을 위해 영원한 생명을 구하지 마십시오. 대신 부활하는 법을 배우십시오.

이것은 .screenrc 설정의 핵심입니다 :

econnect 프로그램으로 수정 한 autossh 패키지에는 rscreen의 예가 있습니다.

--esc 매개 변수는 원격 화면 이스케이프를 다른 것으로 설정하는 것입니다 (내 이스케이프는`)

#add much much more scrollback
defscrollback 10000

# make some default windows

screen -t ADMIN     1
chdir /Users/chiggsy/Sites/
screen -t SITES    2
chdir /Users/chiggsy/src/
screen -t SRC 3
chdir
screen -t FERGUS  4 /Users/chiggsy/bin/econnect --host host.example.com --port 50000 --esc g --user sol
screen -t LAEG 5  /Users/chiggsy/bin/econnect --host host.example2.com --port 505000  --esc g --user invictus

screen -t ROOT      0   sudo su -m

2

참조 : http://skoneka.github.io/screen-session/

Available screen-session modes: 

---- 
save              - save Screen ( and VIM ) session 
load              - load session 
ls                - list saved sessions 
---- 

dump              - print detailed informations about windows in the session 
group             - move windows to a group 
layoutlist        - display a list of layouts 
layout-checkpoint - record a snapshot of the current layout. 
layout-history    - display saved snapshots of the current layout 
layout-redo       - load a snapshot of the current layout, 
layout-undo       - load a snapshot of the current layout, 
layout-zoom       - zoom into and out of a region 
kill              - send SIGTERM to last the process started in a window 
kill-zombie       - kill all zombie windows in the session 
kill-group        - recursively kill all windows in a group 
manager           - sessions manager (screenie like) but featuring session 
                    preview in a split window 
nest-layout       - copy a layout to the current region 
new-window        - start a new Screen window in the same working directory 
                    on the position next to the current window 
name              - get or set the sessionname 
regions           - display a number in every region (like tmux display-panes) 
renumber          - renumber windows to fill gaps 
subwindows        - recursively print windows contained in groups 

2

서버 결함 에서 동일한 질문 에 누락 된 힌트가 하나 있습니다. tmux-resurrecttmux 와 함께 사용하십시오 .

tmux시스템을 다시 시작한 후 환경을 복원하십시오 .

그것이 당신을 위해 복원 할 수있는 것 :

  • 모든 세션, 창, 창 및 순서
  • 각 분할 창의 현재 작업 디렉토리
  • 확대 / 축소 된 경우에도 창 내의 정확한 창 레이아웃
  • 활성 및 대체 세션
  • 각 세션에 대한 활성 및 대체 창
  • 포커스가있는 창
  • 각 창에 대한 활성 창
  • "그룹화 된 세션"(여러 모니터에서 tmux를 사용할 때 유용한 기능)
  • 창 내에서 실행되는 프로그램! 에서 자세한 내용 복원 프로그램 문서 .
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.