๐ tmux โ ํฐ๋ฏธ๋ ์ด ๋๋ง๋ค ์ ์ธ์ ์ด ์๊ธฐ๋ ์ด์ (attach -t ํจ์ )
์ ธ ์์ ์ tmux ์๋ attach ์ค๋ํซ์ด ๋งค๋ฒ ๋น ์ธ์ ์ ์๋ก ๋ง๋๋ ๋ฌธ์ . `attach -t <์ด๋ฆ>` ํ๋์ฝ๋ฉ๊ณผ ์ธ์ ์ด๋ฆ ๋ถ์ผ์น๊ฐ ์์ธ์ด๊ณ , ํ๊น ์๋ attach ํ ์ค๋ก ํด๊ฒฐํ๋ค. JetBrains IDE ํฐ๋ฏธ๋์์ tmux๊ฐ ์๋ ์คํ๋๋ ๊ฒ์ ๋ง๋ ๋ฐฉ๋ฒ๊น์ง.
์ด ๊ธ์ tmux ๋ก๋๋งต์ ํธ๋ฌ๋ธ์ํ ํธ์ด๋ค. ์ ๋ฌธยท์ค์ ยทํ๋ฌ๊ทธ์ธยท๋ถํธ์คํธ๋ฉ๊น์ง ์ ์ฒด ๊ฒฝ๋ก๋ ๋ก๋๋งต์์.
์ฆ์
.zshrc(๋๋ .bashrc)์ โํฐ๋ฏธ๋์ ์ด๋ฉด ์๋์ผ๋ก tmux ์ธ์
์ ๋ถ๋โ ์ค๋ํซ์ ๋ฃ์ด ๋๊ณ ์ฐ๋ค ๋ณด๋ฉด, ์ด๋ ์๊ฐ ์ด๋ฐ ์ํ๊ฐ ๋๋ค.
1
2
3
4
$ tmux ls
0-default: 2 windows (attached)
1-workspace: 2 windows
default: 1 windows # โ ์ ์ํ ๋๋ง๋ค ํ๋์ฉ ๋์ด๋๋ ๋น ์ธ์
์ ์ ์์
ํ๋ ์ธ์
(0-default)์ ๋ฐ๋ก ์๋๋ฐ, ์ ํฐ๋ฏธ๋์ ์ด ๋๋ง๋ค ์๋ฌด๊ฒ๋ ์๋ default ์ธ์
์ด ๊ณ์ ์๋ก ์๊ธด๋ค. ๋ถ๊ธด ๋ถ๋๋ฐ ๋งค๋ฒ ๋น ์ฐฝ์ ๋จ์ด์ง๋ ๊ฒ์ด๋ค.
๋ฌธ์ ์ ์ค๋ํซ
์ ธ ์์ ์ ์๋ attach๋ ๋ณดํต ์ด๋ฐ ํํ๋ค.
1
2
3
4
# tmux ์๋ ์คํ (์ด๋ฏธ tmux ์์ด ์๋ ๋๋ง, IDE ๋ด์ฅ ํฐ๋ฏธ๋ ์ ์ธ)
if command -v tmux &>/dev/null && [[ -z "$TMUX" ]] && [[ "$TERMINAL_EMULATOR" != "JetBrains-JediTerm" ]]; then
tmux attach -t default || tmux new -s default
fi
๊ฐ ์กฐ๊ฑด์ ์๋ฏธ๋ถํฐ ์ง์ผ๋ฉด:
command -v tmuxโ tmux๊ฐ ์ค์น๋ผ ์์ ๋๋ง ์คํ.[[ -z "$TMUX" ]]โ ์ด๋ฏธ tmux ์ธ์ ์์ด๋ฉด$TMUX์ ์์ผ ๊ฒฝ๋ก๊ฐ ๋ค์ด ์๋ค. ์์์ ๋ attachํ๋ฉด ์ธ์ ์ด ์ค์ฒฉ๋๋ฏ๋ก ๋ฐ์ ์์ ๋๋ง ์คํ.[[ "$TERMINAL_EMULATOR" != "JetBrains-JediTerm" ]]โ JetBrains IDE ๋ด์ฅ ํฐ๋ฏธ๋์ผ ๋๋ tmux ์๋ ์คํ์ ๊ฑด๋๋ด๋ค. IntelliJยทPyCharm ๋ฑ JetBrains IDE๋ ๋ด์ฅ ํฐ๋ฏธ๋์ ๋์ธ ๋ ํ๊ฒฝ๋ณ์TERMINAL_EMULATOR=JetBrains-JediTerm์ ๋ฃ์ด ์ค๋ค. ์ด ๊ฐ์ผ๋ก โ์ง๊ธ IDE ๋ด์ฅ ํฐ๋ฏธ๋์ธ๊ฐโ๋ฅผ ํ๋ณํ๋ค.
IDE ํฐ๋ฏธ๋์์ tmux๊ฐ ์ ๋ฉ๋๋ก ๋ฌ๋ค๋ฉด ์ด ์กฐ๊ฑด์ด ๋ฐ๋ก ๊ทธ ๋ฌธ์ ๋ฅผ ๋ง๋ ์ฅ์น๋ค.
.zshrc์ tmux ์๋ ์คํ์ ๋ฃ์ผ๋ฉด JetBrains ๋ด์ฅ ํฐ๋ฏธ๋์ ์ด ๋๋ง๋ค tmux๊ฐ ์๋์ผ๋ก ๋ ์, IDE๊ฐ ๊ธฐ๋ํ๋ ์์ ์ ธ ๋์ tmux ์ธ์ ์์ ๊ฐํ๋ค. IDE์ ํฐ๋ฏธ๋ ์ ์ด(์์ ๋๋ ํ ๋ฆฌ ์ฐ๋, ๋จ์ถํค ๋ฑ)์๋ ์ถฉ๋ํ๋ค.$TERMINAL_EMULATOR๋ก IDE ํฐ๋ฏธ๋์ ๊ฐ์งํด ๊ทธ๋๋ง ์๋ ์คํ์ ๋นผ๋ฉด ๊น๋ํ๊ฒ ํด๊ฒฐ๋๋ค.
์ฌ๊ธฐ๊น์ง๋ ์ ์์ด๋ค. ๋ฌธ์ ๋ ๋ง์ง๋ง ์ค์ด๋ค.
1
tmux attach -t default || tmux new -s default
์๋๋ โdefault ์ธ์
์ด ์์ผ๋ฉด ๋ถ๊ณ , ์์ผ๋ฉด ๋ง๋ค์ด๋ผโ์ด๋ค. ๊ทธ๋ฐ๋ฐ ์ค์ ์ธ์
์ด๋ฆ์ด default๊ฐ ์๋๋ผ 0-default๋ผ๋ฉด?
์์ธ โ attach -t๋ ์ด๋ฆ์ (๊ฑฐ์) ์ ํํ ๋ง์ถฐ์ผ ํ๋ค
tmux attach -t default๋ default๋ผ๋ ํ๊น ์ธ์
์ ์ฐพ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ด์์๋ ์ธ์
์ 0-default๋ค. default๋ก๋ ์ด ์ธ์
์ ๋ชป ์ฐพ๋๋ค.
-t์ ๋งค์นญ ๊ท์น์ ์ ํํ ๋ณด๋ฉด tmux๋ ํ๊น ์ธ์
์ ์ ๋์ด(prefix)๋ก ๋งค์นญํ๋ค. ์ฆ tmux attach -t work๋ workspace ์ธ์
์ ๋ถ์ ์ ์๋ค. ํ์ง๋ง 0-default๋ default๋ก ์์ํ์ง ์์ผ๋ฏ๋ก -t default๋ก๋ ์ ๋ ๋งค์นญ๋์ง ์๋๋ค. ์ ๋์ด ๋งค์นญ์ ์์์๋ถํฐ ๋ง์์ผ ํ๋ค.
๊ทธ๋์ ํ๋ฆ์ ์ด๋ ๊ฒ ๋๋ค.
1
2
3
tmux attach -t default # ์คํจ โ 'default'๋ผ๋ ์ด๋ฆ์ ์ธ์
์ด ์์
|| # ๊ทธ๋์ ๋ท๋ถ๋ถ์ผ๋ก ๋์ด๊ฐ๊ณ
tmux new -s default # ๋งค๋ฒ ์ 'default' ์ธ์
์ ์์ฑ
์ ์ํ ๋๋ง๋ค attach๊ฐ ํ๋ค์ด๋นํ๊ณ new๋ก ๋น ์ง๋ ๊ฒ. ์ด๊ฒ ๋น ์ธ์
์ด ๊ณ์ ์์ด๋ ์ด์ ๋ค.
์ ์ธ์
์ด๋ฆ์ 0-, 1- ๊ฐ์ ์ ๋์ด๊ฐ ๋ถ๋
์ด ํจ์ ์ ๋น ์ง๋ ์ ํ์ ์ธ ๊ฒฝ์ฐ๊ฐ ์ธ์ ์ ๋ ฌ์ ์ํด ์ด๋ฆ์ ์ซ์ ์ ๋์ด๋ฅผ ๋ถ์ด๋ ์ต๊ด์ด๋ค.
tmux ls์ ์ธ์
์ ํ๊ธฐ(prefix + s)๋ ์ธ์
์ ์ด๋ฆ ์ํ๋ฒณ์์ผ๋ก ์ ๋ ฌํ๋ค. ์ ๋ ฌ ์์๋ฅผ ์ง์ ์ง์ ํ๋ ์ต์
์ด ์๊ธฐ ๋๋ฌธ์, ์์๋ฅผ ๊ณ ์ ํ๊ณ ์ถ์ผ๋ฉด ์ด๋ฆ ์์ ๋ฒํธ๋ฅผ ๋ถ์ด๋ ๊ฒ ํํ ๊ธฐ๋ฒ์ด๋ค.
1
2
3
0-default # ํญ์ ๋งจ ์
1-workspace # ๊ทธ๋ค์
2-logs
์ ๋ ฌ์ฉ์ผ๋ก๋ ์๋ฒฝํ๊ฒ ๋์ํ๋ค. ๋ฌธ์ ๋ ์ด ์ ๋์ด๋ฅผ ์๋ attach ์ค๋ํซ์ด ๋ชจ๋ฅธ๋ค๋ ๊ฒ๋ฟ์ด๋ค. ์ค๋ํซ์ ์ฌ์ ํ ์ ๋์ด ์๋ default๋ฅผ ์ฐพ๊ณ ์๋ค.
ํด๊ฒฐ โ ํ๊น์ ์์ ๋ผ์ด๋ธ๋ค
ํต์ฌ์ ์ด๋ฆ์ ๋ฐ๊พธ๋ ๊ฒ ์๋๋ผ, attachํ ๋ ์ด๋ฆ์ ํ๋์ฝ๋ฉํ์ง ์๋ ๊ฒ์ด๋ค.
1
tmux attach || tmux new -s default
tmux attach๋ฅผ ํ๊น ์์ด ๋ถ๋ฅด๋ฉด tmux๋ ๊ฐ์ฅ ์ต๊ทผ์ ์ฐ๋ ์ธ์
์ ์๋์ผ๋ก ๋ถ๋๋ค. ์ด๋ฆ์ด 0-default๋ 1-workspace๋ ์๊ด์๋ค. tmux ์๋ฒ ์์ฒด๊ฐ ์์ ๋(๋ถํ
์งํ ์ฒซ ์คํ ๋ฑ)๋ง attach๊ฐ ์คํจํ๊ณ , ๊ทธ๋ ๋น๋ก์ tmux new -s default๋ก ์ ์ธ์
์ ๋ง๋ ๋ค.
์ฆ ๋ ๊ฐ์ง๊ฐ ๋ ๋ฆฝ๋ ๊ด์ฌ์ฌ๋ก ๊น๋ํ๊ฒ ๋ถ๋ฆฌ๋๋ค.
| ๊ด์ฌ์ฌ | ๋ด๋น |
|---|---|
| ์ธ์ ์ ๋ ฌ ์์ | ์ธ์ ์ด๋ฆ์ ์ซ์ ์ ๋์ด (๊ทธ๋๋ก ์ ์ง) |
| ์ธ์ ์ ์ | tmux attach (ํ๊น ์์) |
์ ๋ ฌ์ฉ ์ ๋์ด๋ ๊ทธ๋๋ก ๋๊ณ , โ๋งค๋ฒ ์ ์ธ์
์์ฑโ ๋ฌธ์ ๋ง ์ฌ๋ผ์ง๋ค. ์ด๋ฆ์ ํ๋์ฝ๋ฉํ -t default๊ฐ ์ ์ผํ ๋ฒ๊ทธ์๋ค.
ํน์ ์ธ์ ์ ํญ์ ์ฐฉ์งํ๊ณ ์ถ๋ค๋ฉด
โ์ต๊ทผ ์ธ์ โ์ด ์๋๋ผ ํญ์ ๊ฐ์ ์ธ์ ์ ๋จ์ด์ง๊ณ ์ถ๋ค๋ฉด ๋ ๊ฐ์ง ์ ํ์ง๊ฐ ์๋ค.
์ ํํ ์ด๋ฆ์ผ๋ก ๋ถ์ด๊ธฐ โ ๋จ, ์ ๋์ด ๋ฒํธ๊ฐ ๋ฐ๋๋ฉด ๋ค์ ๊นจ์ง๋ค.
1
tmux attach -t 0-default
๋๋ new-session -A๋ก โ์์ผ๋ฉด ๋ถ๊ณ ์์ผ๋ฉด ๋ง๋ค๊ธฐโ๋ฅผ ํ ์ค๋ก ํฉ์น๊ธฐ. -A๋ ๋์ ์ธ์
์ด ์ด๋ฏธ ์์ผ๋ฉด new ๋์ attach์ฒ๋ผ ๋์ํ๋ค.
1
tmux new-session -A -s default
์ด ๋ฐฉ์์ ํญ์ default๋ผ๋ ๊ณ ์ ์ด๋ฆ์ ์ธ์
ํ๋๋ฅผ ์ค๊ฐ๋ค. ๋ฐ๋๋ก ์ฌ๋ฌ ์ธ์
์ ์ ๋์ ์ผ๋ก ์ค๊ฐ๋ฉฐ โ๊ทธ๋ฅ ๋ง์ง๋ง์ ์ฐ๋ ๊ณณโ์ผ๋ก ๋์๊ฐ๊ณ ์ถ๋ค๋ฉด ํ๊น ์๋ tmux attach๊ฐ ๋ง๋ค.
๊ฒ์ฆ
๋ฐ๊พผ ๋ค์๋ ์ค์ ๋ก ํ์ธํด ๋ณธ๋ค.
- ์ ํฐ๋ฏธ๋ ์ฐฝ์ ์ฐ๋ค โ ๊ธฐ์กด ์ธ์
(
0-default๋ฑ)์ ๊ทธ๋๋ก ๋ถ๋๊ฐ? tmux ls๋ก ๋น ์ธ์ ์ด ๋ ์ด์ ์์ด์ง ์๋์ง ํ์ธ.- ๋ชจ๋ tmux๋ฅผ ๋๊ณ (๋๋ ์ฌ๋ถํ ํ) ์ฒ์ ์ด์์ ๋๋ง ์ ์ธ์ ์ด ๋ง๋ค์ด์ง๋์ง ํ์ธ.
์ ๋ฆฌ
- ์
ธ ์์ ์๋ attach์์
attach -t <์ด๋ฆ>์ ํ๋์ฝ๋ฉํ๋ฉด, ์ค์ ์ธ์ ์ด๋ฆ์ด ๋ค๋ฅผ ๋ ๋งค๋ฒ ์ ์ธ์ ์ด ์๊ธด๋ค. -t๋ ์ ๋์ด ๋งค์นญ์ด๋ผ0-default๋default๋ก ๋ชป ์ฐพ๋๋ค. ์ ๋ ฌ์ฉ ์ซ์ ์ ๋์ด๋ฅผ ์ฐ๋ ๊ฒฝ์ฐ๊ฐ ๋ํ์ ํจ์ .tmux attach(ํ๊น ์์) = ๊ฐ์ฅ ์ต๊ทผ ์ธ์ ์ ๋ถ๊ธฐ. ์๋ฒ๊ฐ ์์ ๋๋ง ์๋ก ๋ง๋ ๋ค. ์ ๋ ฌ ์ ๋์ด ์ํฌํ๋ก์ฐ์ ์ถฉ๋ํ์ง ์๋๋ค.- ๊ณ ์ ์ธ์
ํ๋๋ง ์ํ๋ฉด
tmux new-session -A -s <์ด๋ฆ>ํ ์ค์ด ๋ ๋ช ํํ๋ค.
๊ด๋ จ ๊ธ
- ์ธ์ ยท์๋์ฐยทํจ๋ ๊ธฐ๋ณธ๊ธฐ์ attach ๋ช ๋ น๋ค: tmux ์ ๋ฆฌ๋ณธ (Cheat Sheet + ์ฌ์ฉ ๊ฐ์ด๋)
- ์ฌ๋ฌ ์ธ์ ์ ํ ๋ฒ์ ์ธํ ํ๊ธฐ: tmux ์ธ์ ๋ถํธ์คํธ๋ฉ โ ์ธ์ ๋งค๋์ ์ ๊ทธ ์์ด(์ ธ)