본문 바로가기

컴퓨터 이야기

사용하기 편한 터미널 멀티플렉서 TMUX


리눅스 기반의 운영체제를 사용하는 서버에 ssh 등을 이용해 접속해 사용하다보면 부득이하게 연결을 종료하고 클라이언트 PC를 꺼야 할 경우가 있다.


시간이 오래 걸리는 수치연산이나 시뮬레이션 같은 동작을 수행시키는 경우 굉장히 난감한 상황인데, 다른 여러 방법으로 프로세스를 진행시키는 방법도 있지만, tmux와 같은 터미널 멀티플렉서를 이용해 해당 터미널의 명령과 실행 상태를 저장하는 방법이 있다.


Ubuntu를 기준으로 아래와 같은 방법으로 시스템 repository에서 설치할 수 있다.


> sudo apt-get install tmux



실행은 그냥 tmux 를 입력해도 되고, 기존에 사용중이던 어떤 터미널을 다시 쓰고싶은 경우 아래와 같이 입력한다.


> tmux attach -t #

(#은 다시 사용하고자 하는 세션 넘버)



tmux는 터미널을 session, window, pane의 단계로 구분한다. session 은 가장 큰 단위이고, session 아래에 window가 존재하고, 각 window에서 pane을 분할할 수 있다.


세션 넘버를 잘 모르거나 현재 tmux를 이용해 생성되어 사용중인 세션이 모두 보고싶은 경우 간단하게 아래와 같이 확인할 수 있다.


> tmux ls


톡특하게도 한 터미널 화면을 여러개로 나눠주는 기능이 있는데, diff 등을 사용하지 않고 여러개의 파일을 동시 수정하거나 프로세스 모니터 등을 띄워놓고 화면을 확인해가면서 작업을 해야할 때 굉장히 유용하다. 이런 기능들은 tmux 특유의 단축키 명령어인 Ctrl + b 를 먼저 입력하고 나서 입력한다. 예를 들면, 화면을 좌/우 2개로 분할하고 싶은 경우 아래와 같이 누르면 된다.


Ctrl + b 누르고 이후 %(좌우분할)

Ctrl + b 누르고 이후 "(상하분할)


이렇게 분할된 것을 pane 이라고 부르는데, 각 pane 사이를 이동하고 싶을 때는 Ctrl + b 누르고 이후 화살표 키를 이용하면 된다. 물론 한 번에 한 pane 사이만 이동할 수 있다. 이 pane들은 window에 소속되어 있어 서로 다른 window의 화면 구성에 영향을 주지 않는다.


아예 새로운 터미널을 하나 더 만들어서 유지하고 싶다면 window라는걸 추가해야 하는데, 마찬가지로 Ctrl + b 누르고 이후에 c를 누르면 된다.


tmux를 실행중인 경우, 화면 아래에 상태 표시줄 같은것이 등장하는데, [0]과 같은 것이 세션이고, 0: 1: 등과 같이 표기된 것이 window 이다.


window 사이를 이동하고 싶은 경우 Ctrl + b 이후에 해당 window의 숫자를 누르면 된다.



session 상태에서 사용을 중지하고 나가고 싶은 경우 Ctrl + b  이후에 d를 눌러 detatch 하면, tmux 터미널에서의 동작은 그대로 수행중인 상태에서 tmux를 벗어날 수 있다.


window는 Ctrl + b 이후에 &를 입력하여 종료할 수 있고, pane은 Ctrl + b  이후에 x를 눌러 종료할 수 있다.


이래저래 연습을 해봤는데, '이제 그만 모두 닫고싶다!' 하는 경우 아래와 같이 session 번호를 입력해 모두 종료할 수 있다.


> tmux kill-session -t #

(#은 종료하고싶은 세션 번호)


사용하다보면 훨씬 복잡해 보이는 기능도 많이 가지고 있는 재미있는 툴이지만, 이정도만 알고 있어도 훨씬 풍요로운 원격 작업을 수행할 수 있다.