Linux에서 tmux를 사용하는 방법(화면보다 나은 이유)
게시 됨: 2022-01-29 Linux tmux
명령은 screen
과 같은 터미널 멀티플렉서입니다. 옹호하는 사람들이 많고 목소리가 높기 때문에 우리는 둘을 비교하기로 결정했습니다. tmux
가 정말 더 나은가요? 아니면 그냥 알고 있는 것을 선호하는 경우인가요?
tmux 대 화면
tmux
및 GNU screen
명령은 모두 터미널 멀티플렉서입니다. 단일 터미널 창 내에서 여러 창을 가질 수 있고 창 사이를 앞뒤로 이동할 수 있습니다. 창은 각각 독립적인 명령줄을 제공하는 창으로 나눌 수 있습니다.
세션을 분리하면 백그라운드에서 실행되는 헤드리스 엔터티가 될 수도 있습니다. 세션을 시작한 터미널 창을 닫을 수도 있습니다. 준비가 되면 새 터미널 창을 열고 여전히 실행 중인 세션을 다시 연결할 수 있습니다. SSH 연결을 통해 이 작업을 수행할 수도 있습니다.
한 컴퓨터에서 세션을 분리하고 집으로 돌아가 원격 컴퓨터에 로그인할 수 있습니다. 다시 연결되면 백그라운드 세션을 다시 연결하고 대화식으로 다시 사용할 수 있습니다.
화면 명령은 무엇입니까?
screen
명령은 터미널 멀티플렉서이기도 하며 옵션으로 가득 차 있습니다. 그것으로 할 수 있는 모든 것에 대한 자세한 내용은 심층 기사를 확인하세요.
이번에는 tmux
에 집중하겠습니다. 계속 진행하면서 screen
이 동일한 기능을 처리하는 방법을 언급할 것입니다.
한 가지만 screen
에 대해 우리를 짜증나게 했습니다. 우리는 그것을 다룰 때 그것을 다룰 tmux
가 더 나은지 확인할 것입니다.
관련: Linux의 screen 명령을 사용하는 방법
tmux 설치
screen
은 일반적으로 인기 있는 Linux 배포판에 기본적으로 설치되지만 tmux
는 그렇지 않습니다. Ubuntu에 tmux
를 설치하려면 다음을 입력하십시오.
sudo apt-get tmux 설치
Manjaro에서는 pacman
을 사용할 수 있습니다.
sudo pacman -Sy tmux
Fedora 31에는 tmux
가 이미 설치되어 있습니다.
tmux 세션 시작
tmux
를 시작하려면 입력하고 Enter 키를 누르십시오.
티먹스
터미널 창은 tmux
세션에 있을 때 상태 표시줄을 표시합니다.
상태 표시줄의 오른쪽에는 호스트 이름, 시간 및 날짜가 표시됩니다. 왼쪽에는 다음과 같은 세션 관련 정보가 표시됩니다.
- [0]: 세션 이름입니다. 기본적으로 0부터 시작하여 번호가 매겨집니다. 아래에서 세션에 의미 있는 이름을 지정하는 방법을 다룹니다.
- 0:bash*: 0은 이것이 이 세션의 첫 번째 창임을 나타냅니다. 이 세션에서 실행되는 유일한 프로세스는
bash
입니다. 프로그램을 실행하면 프로그램 이름이 여기에 표시됩니다. 별표(*)는 이것이 보고 있는 창임을 의미합니다.tmux
세션에서 새 창을 만들 때마다 창 번호와 이 창에서 실행 중인 프로그램 이름이 상태 표시줄에 추가됩니다.
screen
명령은 기본적으로 상태 표시줄을 제공하지 않습니다. 무슨 일이 일어나고 있는지 알기 위해서는 눈을 멀게 하고 재치에 의존해야 합니다. 이는 약간의 연습이 필요합니다. (자신의 상태 표시줄을 구성하지 않는 한.)
플러스 측면에서 터미널 창 부동산 라인을 잃지 않을 것입니다. 물론 터미널 멀티플렉서를 사용할 가치가 있도록 일반적으로 터미널 창을 확장합니다. 이 경우 상태 표시줄에 대한 한 줄의 손실은 큰 문제가 되지 않습니다. 정보를 볼 수 있도록 터미널 창의 이미지를 기본 크기로 두었습니다.
명령은 키 입력을 사용하여 tmux
에 제공되며 여기에는 두 부분이 있습니다. 먼저 Ctrl+B를 눌러 tmux
의 주의를 끕니다. 그런 다음 빠르게 다음 키를 눌러 tmux
에 명령을 보냅니다. 명령은 문자, 숫자, 구두점 또는 화살표 키를 눌러 제공됩니다.
주의를 끌기 위해 Ctrl+A를 누르는 것을 제외하고는 screen
에서 동일합니다.
창을 닫으려면 Ctrl+B를 누른 다음 빠르게 X를 누르십시오. 상태 표시줄이 황색으로 바뀝니다. 그런 다음 창을 종료할 것인지 확인하는 메시지가 표시됩니다.
창을 닫으려면 Y를 누르고 마음이 바뀌면 N을 누르십시오. 나중에 Enter 키를 누를 필요가 없습니다. Y 또는 N은 선택 사항을 등록하기에 충분합니다.
Y를 누르면 창이 닫힙니다. 이 세션의 유일한 창이므로 세션이 종료됩니다.
tmux
세션이 닫히고 tmux
를 시작한 명령줄로 돌아갑니다. 터미널 창에 "[exited]"가 표시됩니다.
이것은 명백한 것을 말하는 것처럼 보일 수 있지만 세션을 닫고 분리되어 실행 중인 상태로 두지 않았음을 확인하는 것입니다. 세션 분리에 대해서는 아래에서 논의할 것입니다.
명명된 tmux 세션 시작
여러 tmux
세션을 정기적으로 시작하는 경우 각 세션에 의미 있는 이름을 지정하는 기능을 빠르게 이해할 수 있습니다. screen
에서도 세션 이름을 지정할 수 있지만 세션 창에는 표시되지 않습니다.
세션 이름으로 tmux
를 시작하려면 new
(새 세션) 명령과 -s
(세션 이름) 옵션을 사용합니다. 세션의 이름은 "geek-1"이므로 다음을 입력합니다.
tmux 새로운 -s 괴짜-1
tmux
세션이 로드되면 맨 왼쪽에 있는 상태 표시줄의 첫 번째 항목으로 "geek-1"이 표시됩니다.
더 많은 창 추가
현재 세션에서 새 창을 만들려면 Ctrl+B를 누른 다음 C를 누릅니다. 현재 세션에서 빈 터미널 창이 나타납니다. 그래서 우리는 이 새 창에서 무언가를 실행할 것입니다. -w
(follow) 옵션을 사용하여 dmesg
명령을 시작하겠습니다.
dmesg -w
이제 세션에 두 개의 창이 있습니다. 하나는 top
이고 다른 하나는 dmesg
입니다. 그러나 한 번에 하나씩만 볼 수 있습니다(잠시 후에 자세히 설명).
상태 표시줄의 왼쪽을 살펴보십시오. 우리는 여전히 "geek-1" tmux
세션에 있습니다. 0번 창에서 top이 실행 중이고 1번 창에서 dmesg
가 실행 중입니다. dmesg
뒤의 별표(*)는 어떤 창이 표시되는지 알려줍니다.
창 사이를 이동하려면 Ctrl+B를 누르고 다음 키 중 하나를 누릅니다.
- N : 다음 창을 표시합니다.
- P: 이전 창을 표시합니다.
- 0 ~ 9: 0 ~ 9 의 창을 표시합니다.
목록에서 창을 선택할 수도 있습니다. Ctrl+B를 누른 다음 W를 누르면 창 목록이 나타납니다.
황색 강조 표시줄을 이동하려면 위쪽 또는 아래쪽 화살표, Home 또는 End를 누릅니다. 디스플레이의 하단 섹션에는 강조 표시된 창의 콘텐츠 미리보기가 표시됩니다.
Enter 키를 눌러 강조 표시된 창으로 이동하거나 Esc 키를 눌러 전환하지 않고 창 목록을 종료합니다.
세션 분리 및 연결
Ctrl+B를 누른 다음 D를 누르면 세션이 분리됩니다. 백그라운드에서 계속 실행되지만 보거나 상호 작용할 수 없습니다.
세션의 top
시작했으므로 시연할 실행 중인 프로세스가 있습니다. 그런 다음 Ctrl+B를 누른 다음 D를 누릅니다. 세션이 사라지고 백그라운드 세션이 됩니다.
원래 터미널 창으로 돌아갑니다. 세션이 분리 tmux
의 메시지가 있습니다. 그것은 또한 우리가 세션에 부여한 이름을 생각나게 합니다. 이는 백그라운드 세션에 연결한 다음 대화형 세션으로 복원하는 데 사용하기 때문에 편리합니다.
분리된 세션을 연결하기 위해 -t
(대상 세션) 옵션과 함께 자명한 attach-session
명령을 사용합니다. 또한 기억할 세션의 이름도 제공합니다.
다음을 입력합니다.
tmux 연결 세션 -t 괴짜-1
세션이 반환되고 다시 표시되는 대화형 세션이 됩니다.
세션을 분리하기 전에 실행한 장기 실행 또는 연속 프로세스는 세션을 연결할 때 완료되지 않는 한 백그라운드에서 계속 실행됩니다.
screen
은 이것을 할 수 있지만 직관적으로 그렇게 할 수는 없습니다.
다중 세션 처리
다른 터미널 창을 열고 "geek-2"라는 새 tmux
세션을 시작하겠습니다.
tmux 새로운 -s 괴짜-2
그 세션에서 우리는 dmesg
를 시작할 것입니다:
dmesg -w
이제 원래 "geek-1" tmux
세션과 "geek-2"라는 새 세션이 있습니다.
상태 표시줄은 이 세션을 "geek-2"라고 하며 dmesg
를 실행하는 하나의 창이 있음을 보여줍니다.
Ctrl+B를 누른 다음 D를 누르면 해당 세션이 분리됩니다.
"geek-1" tmux
세션으로 돌아가서 Ctrl+B를 누른 다음 S를 눌러 tmux
세션 목록을 봅니다.
분명히 하자면 이것은 세션 목록입니다. 이전에 본 유사한 디스플레이는 단일 세션의 창 목록이었습니다.
위쪽 및 아래쪽 화살표, 홈 및 종료를 눌러 황색 강조 표시줄을 이동할 수 있습니다. 하단 섹션에는 강조 표시된 세션의 콘텐츠 미리보기가 표시됩니다.
오른쪽 화살표를 누르면 강조 표시된 세션의 창이 표시됩니다.
Enter 키를 눌러 강조 표시된 세션이나 창으로 이동하거나 Esc를 눌러 세션을 변경하지 않고 세션 목록을 종료합니다. 새 세션을 선택하면 현재 세션이 분리되고 선택한 세션이 연결됩니다.
이 작업을 수행하기 전에 "geek-2" 세션을 분리했습니다. 그러나 원래 터미널 창에 여전히 연결된 세션에서 이 작업을 수행할 수 있습니다. 그렇게하면 화면 변경 사항이 두 tmux
세션에서 동시에 나타납니다.
screen
명령도 유사한 명령 집합을 통해 이 작업을 수행할 수 있습니다.
창 작업
Ctrl+B를 누른 다음 큰따옴표("")를 누르면 창을 가로로 두 개의 창으로 분할합니다.
이것은 현재 창에만 영향을 줍니다. 세션의 다른 항목은 변경되지 않습니다. 이 세션의 창을 나열하기 위해 상단 창에서 tmux ls
명령을 사용했습니다. 두 가지가 있으며 상태 표시줄은 우리가 창 1에 있음을 알려줍니다. Ctrl+B를 누른 다음 0(영)을 눌러 창 0으로 건너뛰면 우리가 그대로 둔 것을 볼 수 있습니다.
이것은 하나의 창에 두 개의 보기가 아니라 두 개의 독립적인 명령줄입니다. 그것들은 뚜렷하고 분리된 껍질입니다. 각 창에서 다른 명령을 실행하여 이를 표시할 수 있습니다.
다음을 입력합니다.
uname -a
ls -hl
한 창에서 다른 창으로 이동하려면 Ctrl+B를 누른 다음 위쪽, 아래쪽, 왼쪽 또는 오른쪽 화살표를 누릅니다.
Ctrl+B를 누른 다음 백분율 기호( %)
를 누르면 현재 창이 세로로 분할됩니다.
Ctrl+B를 누른 다음 Q를 눌러 tmux
가 각 창의 번호를 짧게 깜박이게 합니다.
이 숫자는 tmux
의 프롬프트와 메시지에 사용됩니다. Ctrl+B를 누른 다음 X를 눌러 현재 창을 닫습니다. 상태 표시줄이 황색으로 바뀌고 해당 창 번호를 닫을 것인지 확인하는 메시지가 표시됩니다. Y를 눌러 창을 제거하거나 N을 눌러 그대로 두십시오.
Y를 누르면 창이 제거됩니다.
screen
명령에도 창이 있지만 사용하기가 덜 직관적입니다. screen
에 대해 우리를 짜증나게 하는 것은 창이 있는 세션을 분리하는 경우 해당 세션을 다시 연결하면 창이 사라집니다. 이것은 매우 빨리 늙습니다.
A Ctrl+B 치트 시트
아래에 tmux
에서 사용할 수 있는 다양한 명령의 치트 시트가 포함되어 있습니다.
세션 명령
- S: 세션을 나열합니다.
- $: 현재 세션의 이름을 바꿉니다.
- D: 현재 세션을 분리합니다.
- Ctrl+B를 누른 다음 ?:
tmux
에 도움말 페이지를 표시합니다.
창 명령
- C: 새 창을 만듭니다.
- ,: 현재 창의 이름을 바꿉니다.
- 여: 창문을 나열해.
- N: 다음 창으로 이동합니다.
- P: 이전 창으로 이동합니다.
- 0 ~ 9: 지정한 윈도우 번호로 이동합니다.
창 명령
- %: 수평 분할을 생성합니다.
- ": 세로 분할을 만듭니다.
- H 또는 왼쪽 화살표: 왼쪽 창으로 이동합니다.
- I 또는 오른쪽 화살표: 오른쪽 창으로 이동합니다.
- J 또는 아래쪽 화살표: 아래 창으로 이동합니다.
- K 또는 위쪽 화살표: 위의 창으로 이동합니다.
- Q : 창 번호를 간략하게 표시합니다.
- O: 창을 순서대로 이동합니다. 누를 때마다 모든 항목을 반복할 때까지 다음 항목으로 이동합니다.
- }: 현재 창의 위치를 다음 창으로 바꿉니다.
- {: 현재 창의 위치를 이전 창으로 바꿉니다.
- X: 현재 창을 닫습니다.
비교 방법
기능면에서 screen
과 tmux
는 모두 유사하게 작동하며 동일한 주요 기능을 제공합니다. 이는 현저하게 다른 기능에 액세스하는 방법입니다. tmux
는 다양한 기능을 사용할 수 있는 더 매끄럽고 편안한 방법을 제공합니다. 그러나 그것만이 유일한 차이점은 아닙니다.
tmux
에서 세션과 창의 이름을 바꾸는 기능은 깔끔하고 세션을 다시 연결할 때 창을 유지한다는 사실은 게임 체인저입니다.
반면에 screen
은 세션을 분리했다가 다시 연결할 때 창을 완전히 잃습니다. 이것은 처음부터 분리를 방지할 만큼 충분히 성가신 일입니다.
엄청나게 유연한 스크립팅 기능을 포함하여 tmux
에는 훨씬 더 많은 것이 있습니다. 당신은 그것을 확인하기 위해 자신에게 빚지고 있습니다.
리눅스 명령어 | ||
파일 | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · 보기 · 문자열 · 유형 · 이름 바꾸기 · zip · 압축 풀기 · 마운트 · 언마운트 · 설치 · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · 패치 · 변환 · rclone · 파쇄 · srm | |
프로세스 | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · 종료 · 재부팅 · 정지 · poweroff · passwd · lscpu · crontab · 날짜 · bg · fg | |
네트워킹 | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
관련: 개발자 및 열광자를 위한 최고의 Linux 노트북