완전한 GNU 화면 세션 상태 저장


32

재부팅 후 모든 것을 다시로드 할 수 있도록 GNU 화면 창의 "상태"를 유지하는 것이 가능합니까?

  • 열린 껍질의 수
  • 각 껍질의 이름
  • 각 쉘의 현재 디렉토리
  • 각 껍질의 역사
  • 가능하면 환경 변수

답변:


19

완전한 화면 세션을 저장할 수는 없습니다.

당신이 할 수있는 일은 .screenrc시스템을 다시 시작한 후 몇 가지를 설정 하는 적절한 것을 만드는 것입니다.

다음은 귀하가 기재 한 사항에 대한 의견입니다.

  • 열린 껍질의 수
  • 각 껍질의 이름
  • 각 쉘의 현재 디렉토리

.screenrc시작시 특정 쉘을 열려면 다음과 같이 사용하십시오 .

## set the default shell
shell                   zsh

# screens
screen -t 'zsh'
screen -t 'mutt' mutt
screen -t 'zsh' /home/user/bin/scriptToRun
[..]

창 이름으로 ''사이에 문자열이 표시되고 이름 뒤의 명령은 기본 쉘에서 실행됩니다. 원하는 스크립트를 포함 시키십시오 (예 : 특정 디렉토리의 변경 및 일부 로그 열기).

  • 각 껍질의 역사

여러 세션에서 쉘의 역사를 공유하는 것에 대해 생각해 본 적이 있습니까? IMHO 이것은 일을 훨씬 쉽게 만듭니다. zsh을에서 그와 수행 setopt SHARE_HISTORY.zshrc

  • 가능하면 환경 변수

정말로 이것이 필요하고 트레이드 오프를 원하지 않는다면 화면의 현재 상태를 읽고 쉘 수, 환경 변수 등을 저장 하고이 정보를 시작 스크립트에 저장하는 쉘 스크립트에 대해 생각할 수 있습니다 에 의해 호출되었습니다 .screenrc. 화면의 기본 창을 사용자 정의 할 수 있다면 재부팅 후 깨끗한 환경에 감사하기 때문에 노력할 가치가 없습니다.


제안 해 주셔서 감사합니다. bash에서 내 역사를 공유 할 수있는 방법을 찾았습니다 (zsh만큼 간단하지는 않습니다). 그래서 하나의 명령 스트림이 유지됩니다. .screenrc에 관해서는 그것에 대해 생각해야했습니다. 불행히도 특정 스크립트 만 실행할 수있는 것 같지만 ( 'cd'와 같은 명령이 작동하지 않음) 괜찮습니다. 스크립트로 쉘을 초기화 할 수 있다면 환경 변수는 신경 쓰지 않습니다.
Barthelemy

cd는 쉘에 내장 된 함수이며, cd 명령은 "shell"외부에서는 의미가 없습니다. :-) 그러나 shebang 다음에 cd / foo / bar를 포함하는 스크립트를 간단히 포함시킬 수 있습니다. 그러면 새 쉘이이 디렉토리로 변경됩니다.
echox

예, 나는이 구별을 이해합니다. 명령이 어떻게 든 쉘로 전달 된 다음 쉘에서 실행되었다고 생각했습니다. 그러나 초기화 스크립트를 작성하는 데 아무런 문제가 없습니다. :-) 공유 기록은 훌륭한 아이디어였습니다.
Barthelemy

10

screen-session 이라는 프로젝트를 우연히 발견했습니다 . GNU Screen 세션을 어느 정도 저장하고 다시로드 할 수 있습니다.


2

cryopid 라는 프로세스의 상태를 고정시키는 도구가 있습니다 . 그러나 현재 서브 프로세스 계층 구조 재 작성을 지원하지 않으므로 GNU 화면에서는 작동하지 않습니다. 그들은 미래에 이것을 달성하기를 원하지만 프로젝트는 현재 너무 활발하지 않은 것으로 보입니다. 그럼에도 불구하고 진행 상황을 추적 할 수 있습니다.


0

나는 몇 년 전 솔라리스에 비슷한 것을 만들었습니다. 화면 관련조차도 없습니다. 세션과 관련이있었습니다. "만약 $ TTY = 무엇이든". echox는 올바른 아이디어를 가지고 있습니다.

팁 : 여러 시스템에서이 작업을 수행하는 경우 각 시스템은 로그인 할 때 수행해야 할 작업에 대한 자체 정의가 필요합니다. nfs 마운트 / 홈 또는 이와 유사하거나 모두 동일하지는 않습니다.

HTH, -pbr

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