21. 터미널 여러개 관리하기 (screen, tmux)
screen & tmux
- 리눅스에서 터미널 멀티플렉싱을 위한 도구이다.
- 이들 도구를 사용하면 하나의 터미널 세션에서 여러 창을 열고, 세션을 백그라운드로 보내거나, 세션을 분리했다가 다시 연결할 수 있다. 이는 특히 원격 서버에서 작업할 때 유용하다.
- 특징: 내가 터미널을 닫아도 세션이 그대로 남아있는다 (exit로 명시적으로 종료하는 경우 사라짐)
screen
기본 명령어
-
새 세션 시작
screen
-
이름을 지정하여 새 세션 시작
screen -S session_name
-
세션 분리 (detach)
Ctrl + a, d
-
분리된 세션에 재연결
screen -r
-
현재 세션 목록 보기
screen -ls
-
특정 세션에 연결
screen -r session_name
-
새 창 만들기
Ctrl + a, c
-
창 간 전환
Ctrl + a, n # 다음 창으로 이동 Ctrl + a, p # 이전 창으로 이동
-
창 이름 지정
Ctrl + a, A
-
세션 내 창 목록 보기
Ctrl + a, "
-
특정 창으로 이동
Ctrl + a, <숫자>
-
스크롤 모드로 전환
Ctrl + a + [
-
화면 분할 (창 분할 후 이동해서 새롭게 창을 만들어야 함)
Ctrl + a, S # 수평 분할 Ctrl + a, | # 수직 분할 (| 대신 \\ 사용 가능)
-
분할된 화면 간 이동
Ctrl + a, Tab
-
분할된 화면 제거
Ctrl + a, X
-
외부에서 세션 죽이기
screen -S session_name -X quit
screen 관련 설정 파일 생성
- ~/.screenrc 파일 생성
# 기본 접두사 키를 Ctrl-b로 변경
# escape ^Bb
# 상태 표시줄 설정
hardstatus alwayslastline
hardstatus string '%{= kG}[%H] %{= kw}%-Lw%{= kW}%n*%f %t%{= kw}%+Lw %= %Y-%m-%d %c'
# 새 창의 기본 쉘
shell -$SHELL
# 기본 창 이름 설정
screen -t main
# 창 번호 표시
caption always
caption string '%{= kw}Window: %n %t'
tmux
기본 명령어
-
새 세션 시작
tmux
-
이름을 지정하여 새 세션 시작
tmux new-session -s session_name
-
세션 분리 (detach)
Ctrl + b, d
-
분리된 세션에 재연결 (세션이 유일한 경우)
tmux attach-session # 축약어 a
-
현재 세션 목록 보기
tmux list-sessions # 축약어 ls
-
특정 세션에 연결
tmux attach-session -t session_name # 축약어 a
-
새 창 만들기
Ctrl + b, c
-
창 간 전환
Ctrl + b, n # 다음 창으로 이동 Ctrl + b, p # 이전 창으로 이동
-
창 이름 지정
Ctrl + b, ,
-
세션 내 창 목록 보기
Ctrl + b, w
-
특정 창으로 이동
Ctrl + b, <숫자>
- 스크롤 모드로 전환
- Esc를 통해서 돌아올 수 있으며, 이동은 vi의 이동과 문법이 비슷하다.
Ctrl + b, [
-
화면 분할 (창 분할 후 이동해서 새롭게 창을 만들어야 함)
Ctrl + b, " # 수평 분할 Ctrl + b, % # 수직 분할
-
분할된 화면 간 이동
Ctrl + b, 화살표 키
-
분할된 화면 제거
Ctrl + b, x
-
동기화된 창 (동일한 명령어를 모든 창에 실행)
Ctrl + b, :setw synchronize-panes on
- 비활성화하려면
Ctrl + b, :setw synchronize-panes off
tmux 설정 파일 생성
~/.tmux.conf
파일 생성
# 기본 접두사 키를 Ctrl-a로 변경
#set -g prefix C-a
#unbind C-b
#bind C-a send-prefix
# 상태 표시줄 설정
set -g status-bg colour235
set -g status-fg white
set -g status-left '[#S]'
set -g status-right '[%Y-%m-%d %H:%M:%S]'
# 창 간 이동 시 표시줄 유지
setw -g monitor-activity on
set -g visual-activity on
# 마우스 지원 활성화
#set -g mouse on
# 창 동기화 단축키 설정
#bind s setw synchronize-panes on
#bind S setw synchronize-panes off
# 기존 수직 분할 바인딩 해제 및 새로운 바인딩 추가
#unbind %
#bind | split-window -h
# 기존 수평 분할 바인딩 해제 및 새로운 바인딩 추가
#unbind '"'
#bind - split-window -v
요약
screen
과tmux
는 터미널 멀티플렉서로, 하나의 터미널 세션에서 여러 창과 패널을 관리할 수 있다.screen
은 간단한 작업에 적합하며, 오래된 시스템에서도 사용할 수 있다.tmux
는 더 많은 기능과 사용자 정의 가능성을 제공하며, 최신 시스템에서의 사용에 적합하다.