프로그램 실행, 로그 조회, 디버깅을 동시에 하려고 터미널을 여러개 띄운 적 있지 않나요? 서버와 연결이 불안정해 네트워크 끊긴 후 터미널 재실행 해 본적은요? 실행 중 프로세스를 터미널 창 실수로 닫아 중단한 적은 없었나요?
서로 다른 위치의 사용자와 터미널을 같이 보며 작업할 필요가 있지 않았나요?
tmux 를 써보세요!!
tmux 나오기 전까진 screen 이 있었습니다.
tmux -CC
로 실행 시)주요 리눅스 배포판에서 tmux 패키지로 설치 가능합니다.(단, CentOS 는 EPEL 저장소 추가 필요)
tmux
명령 입력하면 tmux 터미널 실행이 됩니다.
tmux attach
로 재연결 가능합니다. 유지된 tmux 터미널이 여러 개 일 때는 -t
옵션으로 세션 지정해 접속하면 됩니다.옵션
name | description |
---|---|
attach | 이전에 분리했던 세션에 연결,-t 옵션으로 세션 명시 가능, -d 다른 tmux 접속 분리 |
prefix key (기본값 ctrl-b
입력 후 바인딩 된 키 입력
키 | 동작 |
---|---|
C-b C-b | Send the prefix key |
C-b C-o | Rotate through the panes |
C-b C-z | Suspend the current client |
C-b Space | Select next layout |
C-b ! | Break pane to a new window |
C-b " | Split window vertically |
C-b # | List all paste buffers |
C-b $ | Rename current session |
C-b % | Split window horizontally |
C-b & | Kill current window |
C-b ' | Prompt for window index to select |
C-b ( | Switch to previous client |
C-b ) | Switch to next client |
C-b , | Rename current window |
C-b - | Delete the most recent paste buffer |
C-b . | Move the current window |
C-b / | Describe key binding |
C-b 0 | Select window 0 |
C-b 1 | Select window 1 |
C-b 2 | Select window 2 |
C-b 3 | Select window 3 |
C-b 4 | Select window 4 |
C-b 5 | Select window 5 |
C-b 6 | Select window 6 |
C-b 7 | Select window 7 |
C-b 8 | Select window 8 |
C-b 9 | Select window 9 |
C-b : | Prompt for a command |
C-b ; | Move to the previously active pane |
C-b = | Choose a paste buffer from a list |
C-b ? | List key bindings |
C-b C | Customize options |
C-b D | Choose a client from a list |
C-b E | Spread panes out evenly |
C-b L | Switch to the last client |
C-b M | Clear the marked pane |
C-b [ | Enter copy mode |
C-b ] | Paste the most recent paste buffer |
C-b c | Create a new window |
C-b d | Detach the current client |
C-b f | Search for a pane |
C-b i | Display window information |
C-b l | Select the previously current window |
C-b m | Toggle the marked pane |
C-b n | Select the next window |
C-b o | Select the next pane |
C-b p | Select the previous window |
C-b q | Display pane numbers |
C-b r | Redraw the current client |
C-b s | Choose a session from a list |
C-b t | Show a clock |
C-b w | Choose a window from a list |
C-b x | Kill the active pane |
C-b z | Zoom the active pane |
C-b { | Swap the active pane with the pane above |
C-b } | Swap the active pane with the pane below |
C-b ~ | Show messages |
C-b DC | Reset so the visible part of the window follows the cursor |
C-b PPage | Enter copy mode and scroll up |
C-b Up | Select the pane above the active pane |
C-b Down | Select the pane below the active pane |
C-b Left | Select the pane to the left of the active pane |
C-b Right | Select the pane to the right of the active pane |
C-b M-1 | Set the even-horizontal layout |
C-b M-2 | Set the even-vertical layout |
C-b M-3 | Set the main-horizontal layout |
C-b M-4 | Set the main-vertical layout |
C-b M-5 | Select the tiled layout |
C-b M-n | Select the next window with an alert |
C-b M-o | Rotate through the panes in reverse |
C-b M-p | Select the previous window with an alert |
C-b M-Up | Resize the pane up by 5 |
C-b M-Down | Resize the pane down by 5 |
C-b M-Left | Resize the pane left by 5 |
C-b M-Right | Resize the pane right by 5 |
C-b C-Up | Resize the pane up |
C-b C-Down | Resize the pane down |
C-b C-Left | Resize the pane left |
C-b C-Right | Resize the pane right |
C-b S-Up | Move the visible part of the window up |
C-b S-Down | Move the visible part of the window down |
C-b S-Left | Move the visible part of the window left |
C-b S-Right | Move the visible part of the window right |
여러 개의 pane 을 만들어 각 pane 에서 서로 다른 ssh 연결을 해 둡니다.
C-b :
로 커맨드 입력 상태로 들어가서,
setw synchronize-panes on
을 하면, 이제부터 입력하는 내용은 모든 pane 에 동일하게 전달됩니다.
on/off 를 지정하지 않고 setw synchronize-panes
커맨드를 실행하면 토글 버튼처럼 on/off 상태를 전환해줍니다.
https://www.youtube.com/watch?v=Aio10AuyzEo iterm2 와 통합