πŸ–₯️

tmuxλŠ” μ–΄λ–»κ²Œ λ™μž‘ν•˜λ‚˜?

터미널 λ©€ν‹°ν”Œλ ‰μ„œλ‘œ μ„Έμ…˜ μœ μ§€ & λΆ„ν• 

tmux(terminal multiplexer)λŠ” ν•˜λ‚˜μ˜ 터미널 μ°½μ—μ„œ μ—¬λŸ¬ μ„Έμ…˜μ„ κ΄€λ¦¬ν•˜κ³ , 창을 λΆ„ν• ν•˜λ©°, SSH 연결이 λŠκ²¨λ„ μž‘μ—…μ„ μœ μ§€ν•  수 있게 ν•΄μ£ΌλŠ” λ„κ΅¬μž…λ‹ˆλ‹€. 핡심은 μ„œλ²„-ν΄λΌμ΄μ–ΈνŠΈ κ΅¬μ‘°μž…λ‹ˆλ‹€. tmux μ„œλ²„κ°€ λ°±κ·ΈλΌμš΄λ“œμ—μ„œ μ„Έμ…˜μ„ κ΄€λ¦¬ν•˜κ³ , μš°λ¦¬κ°€ λ³΄λŠ” 터미널은 ν΄λΌμ΄μ–ΈνŠΈλ‘œμ„œ μ„œλ²„μ— μ—°κ²°ν•©λ‹ˆλ‹€. κ·Έλž˜μ„œ 터미널을 닫아도(detach) μ„œλ²„μ˜ μ„Έμ…˜μ€ μ‚΄μ•„μžˆκ³ , λ‚˜μ€‘μ— λ‹€μ‹œ μ—°κ²°(attach)ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 계측 κ΅¬μ‘°λŠ” Server > Session > Window > Paneμž…λ‹ˆλ‹€.

ꡬ쑰 λ‹€μ΄μ–΄κ·Έλž¨

πŸ–₯️
tmux Server
λ°±κ·ΈλΌμš΄λ“œ ν”„λ‘œμ„ΈμŠ€
Session: dev
Window 0: vim
Pane 0 Pane 1
Window 1: server
rails s
attach
detach
πŸ’»
Terminal (Client)
iTerm / Terminal.app
$ tmux attach -t dev
# μ„Έμ…˜μ— μ—°κ²°
계측 ꡬ쑰: Server > Session > Window > Pane
Server Session (dev) Window (vim) Pane
μ£Όμš” λͺ…λ Ήμ–΄ (prefix: Ctrl+b)
d detach
c new window
% split vertical
" split horizontal
n/p next/prev window
arrow move pane
SSH λŠκΉ€ μ‹œλ‚˜λ¦¬μ˜€
SSH 접속 tmux new -s work μž‘μ—… 쀑... λ„€νŠΈμ›Œν¬ λŠκΉ€! SSH μž¬μ ‘μ† tmux attach -t work μž‘μ—… κ·ΈλŒ€λ‘œ!
핡심 포인트
  • μ„œλ²„-ν΄λΌμ΄μ–ΈνŠΈ ꡬ쑰: 터미널은 ν΄λΌμ΄μ–ΈνŠΈ, tmux μ„œλ²„λŠ” λ°±κ·ΈλΌμš΄λ“œμ—μ„œ μ‹€ν–‰
  • μ„Έμ…˜ μœ μ§€: detach해도 μ„œλ²„+μ„Έμ…˜μ€ μ‚΄μ•„μžˆμŒ — SSH λŠκΉ€μ—λ„ μ•ˆμ „
  • 닀쀑 μ—°κ²°: 같은 μ„Έμ…˜μ— μ—¬λŸ¬ ν΄λΌμ΄μ–ΈνŠΈκ°€ attach κ°€λŠ₯ (νŽ˜μ–΄ ν”„λ‘œκ·Έλž˜λ°)
  • ν™”λ©΄ λΆ„ν• : Pane으둜 ν•˜λ‚˜μ˜ Windowλ₯Ό λΆ„ν• ν•΄μ„œ λ©€ν‹°νƒœμŠ€ν‚Ή

λ™μž‘ 흐름

1

첫 tmux λͺ…λ Ή μ‹€ν–‰ μ‹œ λ°±κ·ΈλΌμš΄λ“œμ—μ„œ tmux μ„œλ²„ ν”„λ‘œμ„ΈμŠ€ μ‹œμž‘

2

μ„œλ²„κ°€ μƒˆ μ„Έμ…˜(Session) 생성, μ„Έμ…˜ μ•ˆμ— κΈ°λ³Έ μœˆλ„μš°(Window) 생성

3

터미널(ν΄λΌμ΄μ–ΈνŠΈ)이 μ„œλ²„μ— μ—°κ²°λ˜μ–΄ μ„Έμ…˜ ν‘œμ‹œ

4

Ctrl+b d둜 detach β†’ ν΄λΌμ΄μ–ΈνŠΈλ§Œ μ’…λ£Œ, μ„œλ²„+μ„Έμ…˜μ€ μœ μ§€

5

tmux attach둜 κΈ°μ‘΄ μ„Έμ…˜μ— λ‹€μ‹œ μ—°κ²° (SSH μž¬μ ‘μ† 후에도 κ°€λŠ₯)

6

Ctrl+b %/\" 둜 pane λΆ„ν• , Ctrl+b c둜 μƒˆ window 생성

μž₯점

  • SSH λŠκΉ€μ—λ„ μ„Έμ…˜ μœ μ§€
  • ν™”λ©΄ λΆ„ν• λ‘œ λ©€ν‹°νƒœμŠ€ν‚Ή
  • μ„Έμ…˜ 곡유둜 ν˜‘μ—… κ°€λŠ₯
  • 슀크립트둜 μžλ™ν™” κ°€λŠ₯ (tmuxinator)
  • 가볍고 빠름

단점

  • ν‚€ 바인딩 ν•™μŠ΅ ν•„μš”
  • prefix ν‚€ (Ctrl+b) μŠ΅κ΄€ 듀이기
  • 마우슀 지원이 μ œν•œμ  (μ„€μ • ν•„μš”)
  • λ³΅μž‘ν•œ λ ˆμ΄μ•„μ›ƒ 관리 어렀움

μ‚¬μš© 사둀

SSH μ—°κ²° λŠκΉ€ λ°©μ§€ (원격 μ„œλ²„ μž‘μ—…) 터미널 ν™”λ©΄ λΆ„ν•  (μ—¬λŸ¬ μž‘μ—… λ™μ‹œ λͺ¨λ‹ˆν„°λ§) νŽ˜μ–΄ ν”„λ‘œκ·Έλž˜λ° (같은 μ„Έμ…˜ 곡유) μž₯μ‹œκ°„ μž‘μ—… μœ μ§€ (λΉŒλ“œ, 배포) μ„œλ²„ ν”„λ‘œμ„ΈμŠ€ 관리 (detach ν›„ μ’…λ£Œ)