세션 관리
세션 생성 및 목록
screen # 이름 없는 새 세션 screen -S work # "work"라는 이름의 새 세션 screen -ls # 모든 세션 목록 screen -list # -ls와 동일
세션 명령어
screen -S name이름 있는 새 세션 시작
screen -r name분리된 세션에 재연결
screen -x name이미 연결된 세션에 공유 연결
screen -d name원격 세션 분리
screen -d -r name다른 곳에서 분리 후 여기서 재연결
screen -D -RR강제 분리 후 재연결 (적극적)
screen -lsPID와 함께 모든 세션 목록
screen -wipe죽은 세션 정리
윈도우
윈도우 기본
Ctrl-a c새 윈도우 생성
Ctrl-a n다음 윈도우
Ctrl-a p이전 윈도우
Ctrl-a 0-9번호로 윈도우 전환
Ctrl-a "모든 윈도우 목록 (대화형)
Ctrl-a '이름/번호로 윈도우 전환
Ctrl-a A현재 윈도우 이름 변경
Ctrl-a k현재 윈도우 종료
윈도우 관리
Ctrl-a w상태 표시줄에 윈도우 목록 표시
Ctrl-a Ctrl-a마지막 두 윈도우 간 전환
Ctrl-a N윈도우 번호와 이름 표시
exit / Ctrl-d윈도우 닫기 (쉘 종료)
분할 및 영역
분할 명령어
Ctrl-a S수평 분할 (위/아래)
Ctrl-a |수직 분할 (왼쪽/오른쪽)
Ctrl-a Tab다음 영역으로 포커스 이동
Ctrl-a X현재 영역 닫기
Ctrl-a Q현재 영역 제외 모두 닫기
영역 워크플로
Ctrl-a S # 수평 분할 Ctrl-a Tab # 새 영역으로 이동 Ctrl-a c # 영역에서 윈도우 생성 Ctrl-a :resize 20 # 영역을 20줄로 설정
복사 모드
스크롤백 및 복사
Ctrl-a [복사/스크롤백 모드 진입
Space선택 시작/종료 (복사 모드에서)
Enter선택 복사 후 복사 모드 종료
Ctrl-a ]복사한 텍스트 붙여넣기
h/j/k/l커서 이동 (복사 모드에서 vi 키)
Ctrl-u / Ctrl-d반 페이지 위/아래 스크롤
/ or ?앞/뒤로 검색
Esc복사 모드 종료
복사 워크플로
Ctrl-a [ # 복사 모드 진입 Space # 시작 표시 (먼저 이동) Space # 끝 표시 + 복사 (먼저 이동) Ctrl-a ] # 현재 윈도우에 붙여넣기
분리 및 재연결
분리
Ctrl-a d현재 세션 분리
Ctrl-a D D분리 후 로그아웃
Ctrl-a zscreen 일시 중단 (Ctrl-Z처럼)
screen -d PIDPID로 원격 세션 분리
재연결
screen -r # 재연결 (세션이 하나인 경우) screen -r work # 이름으로 재연결 screen -r 12345 # PID로 재연결 screen -d -r work # 다른 터미널에서 세션 빼앗기
지속적인 워크플로
# 장시간 작업 시작, 분리, 나중에 재연결 screen -S build make -j4 all # 빌드 시작 Ctrl-a d # 분리, 귀가 screen -r build # 나중에 재연결
공유
다중 사용자 모드
# 호스트가 다중 사용자 활성화 Ctrl-a :multiuser on Ctrl-a :acladd alice # 사용자 alice에게 접근 권한 부여 # Alice가 연결 screen -x hostuser/sessionname
접근 제어
:multiuser on다중 사용자 모드 활성화
:acladd user사용자에게 전체 접근 권한 부여
:aclchg user -w '#'사용자를 읽기 전용으로 설정 (모든 윈도우)
:acldel user사용자 접근 권한 제거
screen -x user/sess공유 세션에 연결
설정
~/.screenrc 필수 설정
startup_message off # 시작 화면 건너뛰기 defscrollback 10000 # 스크롤백 버퍼 줄 수 hardstatus alwayslastline hardstatus string '%{gk}%H %{wk}%?%-Lw%?%{bw}%n*%f %t%{wk}%?%+Lw%?' shell -$SHELL # 로그인 쉘 사용
유용한 설정
startup_message off시작 메시지 숨기기
defscrollback N스크롤백 버퍼 설정 (기본 100)
escape ^Bb접두키를 Ctrl-b로 변경
shelltitle '$ |bash'윈도우 제목 자동 설정
caption always '%n %t'항상 윈도우 정보와 함께 캡션 표시
autodetach on연결 끊김 시 자동 분리 (기본 활성)
vbell on청각 대신 시각적 벨 사용
일반 패턴
개발 환경 설정
# .screenrc에서 윈도우 자동 생성 screen -t editor 0 vim screen -t server 1 python -m http.server screen -t shell 2 bash select 0 # 에디터 윈도우에서 시작
로깅 및 모니터링
Ctrl-a H # screenlog.N에 로깅 토글 Ctrl-a M # 활동을 위한 윈도우 모니터링 Ctrl-a _ # 침묵을 위한 윈도우 모니터링
빠른 참조
Ctrl-a ?모든 키 바인딩 표시
Ctrl-a :help내장 도움말
Ctrl-a :source file설정 파일 로드
Ctrl-a :screen cmd새 윈도우에서 명령 실행
Ctrl-a :quit모든 윈도우 종료 및 세션 종료