Terminal의 마술사 tmux
what is tmux??
SSH 접속하여 프로그램을 구동시키는 황경에서 ssh 접속이 끊어지면 프로그램이 같이 종료되는 것을 경험 해보았을 것이다. 이러한 현상의 대처법으로 nohup이라는 것을 이용하여 해당 프로그램을 백그라운드로 구동시키는 방법이 있지만 tmux를 이용하여 세션을 따로 할당하여 프로그램을 구동시키는 방법도 있다. 이외에 tmux에서 제공하는 멀티윈도우 기능이 터미널 작업에서 유용하게 사용하니 같이 공부해보자
tmux session 생성
tmux에는 session이라는 것이 있다. 세션은 작업들을 하나로 묶은 개념이다. 예제를 보면서 진행한다면 조금 더 이해가 편할 것이다.
터미널 상에 tmux
를 입력하게 되면 세션이 하나가 할당되면서 터미널 창이 하나가 나오면서 아래와 같이 밑에 초록색으로 상태를 보여주는 상태 표시줄이 나온다.
tmux을 아무 옵션없이 세션을 생성한다면 세션 이름이 0으로 생성이되면서 다음에 생성되는 세션의 이름은 1으로 생성이 된다.
이렇게 작업을 하는 것은 작업에 있어 혼동을 줄 수 있으니 세션에 이름을 부여하는 방법을 배워보자
아래와 같이 옵션을 주게 되면 세션 이름으로 세션이 생성이 된다.
tmux new -s work_1
(아래의 상태창을 보면 세션의 이름을 확인할 수 있다.)
개발환경 실습
tmux에서는 명령모드라는 것이 있다. 세션에서 여러개 화면이나 세션을 관리하는 작업을 위해서 사용하는 것으로 명령모드에 들어가려면 ctrl + b
을 누르면 명령모드로 들어갈 수 있다.
명령모드(ctrl + b)에서 "
를 입력하면 화면 처럼 하나의 윈도우가 생기면서 각기 터미널이 활성화가 된다.
명령모드(ctrl + b)에서 %를 입력하면 오른쪽으로 윈도우가 생성된다.
명령모드(ctrl + b)에서 방향키를 누르면 사용하는 화면을 이동할 수 있다.
명령모드(ctrl + b)에서 z를 입력하면 해당 윈도우가 큰 화면으로 볼 수 있다. 다시 같은 작업을 진행하게 되면 원래 상태로 돌아온다.
명령모드(ctrl + b)에서 alt키와 방향키를 이용하여 윈도우의 크기를 조절할 수 있다.
명령모드(ctrl + b)에서 d키를 입력하면 해당 세션에서 나올 수 있다.(종료되는 것이 아님)
세션에서 나와도 tmux ls
로 실행 중인 세션을 확인할 수 있다.
종료한 세션으로 다시 어떻게 들어갈 수 있을까??
tmux at -t <session-name>