답변:
예, 컴퓨터를 재부팅하면 세션이 손실됩니다. 세션을 저장할 수 없습니다. 그러나 스크립트를 작성할 수 있습니다. 실제로 가장 중요한 것은 일부 세션을 다시 작성하기 위해 스크립트를 작성하는 것입니다. 예를 들어, 세션을 생성하는 간단한 쉘 스크립트는 다음과 같습니다.
#!/bin/zsh
SESSIONNAME="script"
tmux has-session -t $SESSIONNAME &> /dev/null
if [ $? != 0 ]
then
tmux new-session -s $SESSIONNAME -n script -d
tmux send-keys -t $SESSIONNAME "~/bin/script" C-m
fi
tmux attach -t $SESSIONNAME
이것이하는 일입니다. 먼저 tmux has-session 과 함께 해당 이름을 가진 세션이 있는지 확인합니다 (이 경우 원래 이름은 "script"임) . 리턴 코드를 확인합니다. 해당 이름의 진행중인 세션이 이미있는 경우 "if"주기를 건너 뛰고 세션에 연결된 마지막 줄로 바로 이동합니다. 그렇지 않으면 세션을 생성하고 일부 키를 세션에 보냅니다 (임의의 스크립트 만 실행). 그런 다음 "if"블록을 종료하고 연결합니다.
이것은 매우 간단한 샘플입니다. 연결하기 전에 여러 개의 창, 창 등을 만들 수 있습니다.
그러나 이것은 당신이 요구 한 것과 똑같지 는 않을 것입니다. 예를 들어 세션을 변경하면 창 이름을 바꾸고 새 창을 만드는 경우 재부팅하면 변경 사항이 저장되지 않습니다.
스크립팅 세션 프로세스를 용이하게하는 몇 가지 도구가 있지만 수동으로 작업하는 것을 선호합니다 (더 다재다능하다고 생각합니다). 이러한 도구는 Tmuxinator 와 Teamocil 입니다.
나의 주요 정보원은 "The Pragmatic Bookshelf"Tmux입니다.
tmux send-keys ...
라인 의 목적은 무엇입니까 ?
some command; if [ $? != 0 ]; then .....
은 다음과 같이 쓰기 쉽고 읽기 쉽습니다 if ! some command; then .....
.
필자는 열린 tmux 세션, 창 및 현재 작업 디렉토리를 각각 유지 하는 간단한 bash 스크립트 를 작성했습니다 .
cron에서 수동 또는 주기적으로 호출하십시오 (잊어 버릴 수 있기 때문에).
tmux-session save
에 쓸 것 ~/.tmux-session
입니다. 재부팅 후 다음과 같이 복원하십시오.
tmux-session restore
수백 줄 길이의 Perl 스크립트보다 훨씬 낫습니다.
완전한 tmux 환경을 저장하고 나중에 복원 할 수있는 tmux 플러그인을 작성했습니다. 그것은 당신이 결코 TMUX를 종료하지 않는 느낌을 갖도록 정말로 자세하게 노력합니다.
https://github.com/tmux-plugins/tmux-resurrect
업데이트 : 이제 tmux 환경의 자동 백그라운드 저장을 수행 하는 tmux-continuum 플러그인이 있습니다. 선택적으로 컴퓨터 재부팅 후 tmux 환경을 * 자동으로 * 복원합니다.
tmuxinator 는 Ruby로 작성된 도구로, tmux 세션을 쉽게 작성하고 관리하는 데 사용할 수 있습니다. 프로젝트를 만드는 데 사용할 수 있으며 나중에 tmux 세션으로 인스턴스화 할 수 있습니다.
세션을 다시 만들 때 https://github.com/jimeh/tmuxifier 를 성공적으로 사용 합니다. 이것은 git을 사용하여 루비없이 설치할 수 있습니다.
샘플은 매우 설명이 필요합니다 (예 : https://github.com/jimeh/tmuxifier/blob/master/examples/example.session.sh).