Knowhow/Linux

Tmux 사용하기. 터미널 닫아도 코드 실행 유지.

침닦는수건 2024. 12. 27. 14:29
반응형

학습용 서버든, 서비스용 서버든 보통 원격 접속(GUI가 보통 없으니 ssh)으로 컨트롤하게 되는데,  항상 돌아가야 하는 코드가 있을 경우 원격 접속 터미널을 닫아버리면 서버 코드가지 멈춰버리기 때문에 귀찮다. 실수로라도 로컬 PC 터미널을 닫거나 로컬 PC를 꺼야되는 일은 상당히 빈번한데 이 때마다 서버 코드가 멈춰버리면 힘들다.

 

이 문제를 해결하기 위해 보통 사용하는 것이 Tmux다. 간단하게 말하면 겉모습은 똑같지만, 터미널을 닫아도 터미널 화면만 닫힐 뿐 PC에서는 계속 터미널이 떠있는 것과 같이 만든다. 따라서 tmux session 내에서 원격 접속을 해둘 경우, 터미널을 닫아도 원격 접속이 계속 유지되는 상태로 만들 수 있다. 

 

여러 사용 커맨드들이 있지만 최소로 불편하지 않을 정도로 사용할 커맨드만 여기에 정리한다. 

 

설치 

sudo apt install tmux

 

짠.

 

사용법

* Tmux 커맨드는 Ctrl+B를 누르고 나서 입력하는 순서다. Ctrl+B를 누르고 나면 이제부터 입력하는 키는 tmux 커맨드를 뜻한다라고 미리 알려주는 것. 

 

** ctrl + b를 눌렀다 떼고 나서 따로 키를 누르는 것이다. 예를 들어 ctrl+ b+ d 이렇게 3개를 누르는 것이 아니다.


1) tmux 세션 생성 + 진입

// 새로 생성할 경우 : 관리를 위해 항상 세션 이름을 지정해서 만드는 습관
tmux new -s SESSION_NAME

// 이미 있는 세션에 다시 접속할 경우
tmux attach -t SESSION_NAME

// 세션 이름 까먹었을 경우 
tmux ls

 

tmux 세션 진입한 뒤에는 아래 초록색 띠가 생긴다. 이 띠를 보고 내가 원격 PC 터미널을 보고 있구나 라고 인식해야 혹시 모를 사고를 막을 수 있다.


2) tmux 세션 벗어나기 (실행 코드는 살려두고 나오는 방법)

[Ctrl + B] 누르고 떼고, d

 

원격 PC는 그대로 둔 채 로컬 PC 터미널만 정리하고 싶으면 위 커맨드를 입력하면 된다. 입력 후 [detached (from session SESSION_NAME)]이 출력되어야 정상 종료된 것 

 

다른 글들에서 ctrl + b + d라고 써놔서 한 번에 누르는 것 같지만 동시에 누르면 그냥 나가진다. ctrl+d를 누르면 알다시피 그냥 터미널을 꺼버리는 것이라서 tmux 세션 종료 + 터미널 닫기가 실행된다고 보면 된다. 

 

3) tmux 세션 꺼버리기 (실행 코드고 뭐고 나오는 방법)

// 점잖은 방법
tmux kill-session -t SESSION_NAME

// 그냥 끄는 방법
exit 입력하거나 ctrl + d 연타

 

이렇게 끄면 그냥 다 꺼버리는 것이다. 


4) tmux 화면 분할 / 이동

// 좌우
[ctrl + b] 누르고 떼고, %  : shift 누르고 진짜 % 입력해야 됨. 5 누르면 안됨.

// 상하
[ctrl + b] 누르고 떼고, " :  shift 누르고 진짜 % 입력해야 됨. ' 누르면 안됨.

// 이동
[ctrl + b] 누르고 떼고, 방향키~

 

화면 왔다갔다 하는 p, n, l 등 키 많은데 사실 화살표만 알아도 문제 없음. 이게 더 직관적.

 

분할할 화면만 없애고 싶으면 exit 입력

반응형