tmux는 많은 pseudoterminal을 window와 session 단위로 관리하는 도구이다. 하나의 tmux 서버가 세션을 관리하고, tmux 클라이언트는 tmux 서버와 소켓으로 통신하며 그 세션의 pseudoterminal들을 사용자가 원하는 방식대로 보여준다고 한다. 지식의 한계로 더 자세하게 설명할 수 없기 때문에, man tmux
와 man pty
를 남겨두고 본론으로 넘어가겠다.
긴 추석 연휴를 맞이하야 Vim 스터디를 하다보니 Vim 플러그인을 이것 저것 둘러보다 보니 vim-dispatch 플러그인을 보다 보니 tmux 환경 하에서 비동기적으로 수행된다는 말을 보다 보니 이러다 저러다 보니 tmux에 첫 발걸음을 내밀게 되었다. 그래서 이번 포스트를 통해 첫 걸음을 걸은 과정을 기록하려 한다.
Ubuntu 16.04 Desktop을 기준으로 tmux의 가장 간단한 사용법을 정리한다.
설치
Ubuntu/Debian의 경우, 간단하게 시스템 repository에서 설치 가능하다.
$ sudo apt install tmux
무작정 따라하기
터미널의 소속을 명확하게 하기 위해서 일반적인 터미널은 $
, tmux가 관리하는 터미널은 tmux $
로 표기함을 미리 알려드린다.
$ tmux
음, 뭔가 똑같은데 달라진 느낌이 든다. 오빠 나 달라진 거 없어? 달라진 점은 아래에 상태 표시줄이 생겼다는 점이다. tmux client가 새로운 session을 열었고 하나의 기본 window가 켜져 있는 것이다. 기본값으로 <CTRL-B>
가 tmux의 기능을 발동시키는 trigger의 역할을 한다. 다음 키가 이상해 보일 수 있지만 그래도 입력해보자.
tmux $ <CTRL-B> %
Enter 키를 입력할 필요 없이 바로 창이 나눠진다. 이렇게 나눠진 창들을 pane이라고 한다.
tmux $ <CTRL-B> "
창이 또 나눠진다. 이번엔 세로로 나눠졌다. 자연스럽게 나는 나눠진 pane 사이로 이동하고 싶어진다.
tmux $ <CTRL-B> 화살표키
오 pane을 왔다 갔다 할 수 있어졌다. 그럼 여기 저기에 이것 저것 실행해보자.
열심히 일하는 척
pane을 추가하기보다는 한 판이 더 있으면 좋겠다면? window를 추가해야 한다.
tmux $ <CTRL-B> c
아래 상태 표시줄에 탭 하나가 추가된 것을 알아채자. 그럼 이제 window 레벨에서 다음 명령어를 통해 왔다 갔다 해보자.
tmux $ <CTRL-B> 0
tmux $ <CTRL-B> 1
사실 나는 tmux라는 방에 들어와서 할만큼 했고, 그만 나가고 싶다. 그런데 아직 굴러가고 있는 작업이 있으므로 프로세스를 보존하면서 방만 나갈 수 있다.
tmux $ <CTRL-B> d
방을 나갔다는게 느껴지는가? detached
라는 메세지를 받으며 기존 환경으로 돌아왔다. 이 메세지에서 작업이 떨어져 나가서 어딘가에서 돌고 있다는 느낌을 받을 수 있는데, 실제로 남아있는지 확인해보자.
$ tmux ls
이 스크린샷에서는 세션이 2개인데, 예제대로 실행했다면 세션은 하나만 있을 것이다.
내가 쓰던 세션이 남아있다. 그 세션에서 2개의 window가 열려있다는 정보도 알려준다. 다시 저 세션을 불러오자.
$ tmux attach
다시 tmux 세션 안으로 들어간 것을 확인할 수 있다. 그만 끝내자. exit
등의 일반적인 명령어를 통해 일일이 하나씩 닫아봐도 되고, <CTRL-B> x
(pane 종료) <CTRL-B> &
(window 종료)를 사용해보기도 하고, detach한 후
$ tmux kill-session -t 0
라고 하면 세션 통째로 종료할 수 있다.반 걸음 더
무작정 따라하면서 tmux가 대충 뭔 일을 하는 지는 알겠다. 한 가지 불만은 tmux가 세션을 시작할 때, 0
이라는 성의없는 이름을 세션에 붙여준다는 것이다. tmux를 스스로 통제할 수 있으려면 세션의 이름을 관리하는 것이 좋아 보인다. 이와 관련된 명령어를 정리한다. 이 부분은 man tmux
의 일부분을 정리한 것이니, 자세한 내용이 필요하다면 man tmux
전문을 보시길 추천한다.
tmux new-session -s SESSION_NAME
: SESSION_NAME
이라는 이름의 새로운 세션을 시작한다.
tmux list-sessions
: 현재 열려있는 세션 목록을 보여준다.
tmux has-session -t TARGET_SESSION
: TARGET_SESSION
이라는 이름의 세션이 열려있는지 확인해본다.
tmux attach-session -t TARGET_SESSION
: TARGET_SESSION
이라는 이름의 세션으로 들어간다.
참조 링크
https://www.sitepoint.com/tmux-a-simple-start/
tmuxifier: tmux의 window, session 설정을 세팅해서 바로 사용할 수 있게 해주는 쉘스크립트 기반의 wrapper
https://github.com/jimeh/tmuxifier
'GNU-Linux' 카테고리의 다른 글
UNIX as IDE: 1. Introduction (0) | 2017.11.06 |
---|---|
Vim 사용자가 되기 위한 첫 걸음 (.feat tmux) (1) | 2017.10.06 |
Vim의 화면 분할: window, tab 활용 (0) | 2017.10.05 |
apt update 중 Hash Sum Mismatch 오류 해결 (1) | 2017.09.19 |
Ubuntu Desktop iBus 한글 설치 및 설정 (0) | 2017.08.24 |