Jak korzystać z tmux w systemie Linux (i dlaczego jest lepszy niż ekran)
Opublikowany: 2022-01-29 Polecenie tmux
w systemie Linux jest multiplekserem terminala, takim jak screen
. Jego zwolennicy są liczni i głośni, więc postanowiliśmy porównać obie. Czy tmux
jest naprawdę lepszy, czy jest to tylko przypadek preferowania tego, co znasz?
tmux a ekran
Zarówno polecenia tmux
, jak i GNU screen
są multiplekserami terminala. Pozwalają mieć wiele okien w jednym oknie terminala i przeskakiwać między nimi. Okno można podzielić na panele, z których każdy daje niezależną linię poleceń.
Możesz także odłączyć sesję i stanie się ona bezgłową jednostką działającą w tle — możesz nawet zamknąć okno terminala, które ją uruchomiło. Kiedy będziesz gotowy, możesz otworzyć nowe okno terminala i ponownie dołączyć wciąż działającą sesję. Możesz to również zrobić przez połączenie SSH.
Możesz odłączyć sesję na jednym komputerze, wrócić do domu i zalogować się na komputerze zdalnym. Po ponownym połączeniu możesz ponownie dołączyć sesję w tle i ponownie z niej korzystać interaktywnie.
Co to jest polecenie na ekranie?
Polecenie screen
jest również multiplekserem terminala i zawiera mnóstwo opcji. Aby uzyskać szczegółowe informacje na temat wszystkiego, co możesz z nim zrobić, zapoznaj się z naszym szczegółowym artykułem.
Tym razem skupimy się na tmux
. W dalszej części wspomnimy, jak screen
obsługuje tę samą funkcję lub funkcję.
Tylko jedna rzecz nas denerwowała w przypadku screen
. Omówimy to, kiedy do tego dojdziemy i zobaczymy, czy tmux
wypada lepiej.
POWIĄZANE: Jak korzystać z polecenia ekranowego systemu Linux
Instalowanie tmux
Chociaż screen
jest zazwyczaj domyślnie instalowany w popularnych dystrybucjach Linuksa, tmux
nie. Aby zainstalować tmux
na Ubuntu, wpisz:
sudo apt-get zainstaluj tmux
Na Manjaro możesz użyć pacman
:
sudo pacman -Sy tmux
W Fedorze 31 tmux
jest już zainstalowany.
Rozpoczęcie sesji tmux
Aby uruchomić tmux
, po prostu wpisz go i naciśnij Enter:
tmux
Okno terminala pokaże pasek stanu, gdy jesteś w sesji tmux
.
Po prawej stronie paska stanu wyświetlana jest nazwa hosta oraz godzina i data. Po lewej stronie wyświetlane są następujące informacje związane z sesją:
- [0]: To jest nazwa sesji. Domyślnie są ponumerowane, zaczynając od zera. Poniżej omówimy, w jaki sposób możesz nadać znaczące nazwy sesjom.
- 0:bash*: 0 wskazuje, że jest to pierwsze okno w tej sesji. Jedynym uruchomionym w tej sesji procesem jest
bash
. Jeśli uruchomisz program, jego nazwa pojawi się tutaj. Gwiazdka (*) oznacza, że jest to okno, na które patrzysz. Za każdym razem, gdy tworzysz nowe okno w sesjitmux
, jego numer okna i nazwa uruchomionego w nim programu są dodawane do paska stanu.
Polecenie screen
domyślnie nie wyświetla paska stanu. Musisz latać na ślepo i polegać na swoim sprycie, aby wiedzieć, co się dzieje, co wymaga trochę praktyki. (O ile nie skonfigurujesz własnego paska stanu).
Plusem jest to, że nie stracisz linii terminalu nieruchomości okiennych. Oczywiście normalnie rozszerzyłbyś okno terminala, aby korzystanie z multipleksera terminala było opłacalne. W takim przypadku utrata jednej linii paska stanu nie stanowi większego problemu. Zostawiliśmy tutaj obrazy okien terminala w domyślnym rozmiarze, dzięki czemu można zobaczyć informacje.
Polecenia są wydawane tmux
za pomocą naciśnięć klawiszy i są na to dwie części. Najpierw naciśnij Ctrl+B, aby zwrócić uwagę tmux
. Następnie szybko naciskasz następny klawisz, aby wysłać polecenie do tmux
. Polecenia wydawane są przez naciskanie liter, cyfr, znaków interpunkcyjnych lub klawiszy strzałek.
Tak samo jest w screen
, z tą różnicą, że naciskasz Ctrl+A, aby zwrócić jego uwagę.
Aby zamknąć okno, naciśnij Ctrl+B, a następnie szybko naciśnij X. Pasek stanu zmieni kolor na bursztynowy. Następnie zostaniesz poproszony o potwierdzenie, że chcesz zabić okno.
Naciśnij Y, aby zamknąć okno lub N, jeśli zmienisz zdanie. Nie musisz później naciskać Enter; Y lub N wystarczy, aby zarejestrować swój wybór.
Jeśli naciśniesz Y, okno się zamknie. Ponieważ jest to jedyne okno w tej sesji, sesja zostaje zakończona.
Sesja tmux
zostaje zamknięta i wracasz do wiersza poleceń, z którego uruchomiłeś tmux
. Zobaczysz „[exited]” w oknie terminala.
Może się wydawać, że to stwierdzenie oczywiste, ale jest to potwierdzenie, że zamknąłeś sesję i nie zostawiłeś jej odłączonej i uruchomionej. Sesje odłączania omówimy poniżej.
Rozpoczynanie nazwanej sesji tmux
Jeśli regularnie uruchamiasz wiele sesji tmux
, szybko docenisz funkcjonalność nadawania każdej z nich znaczącej nazwy. Sesje można również nazwać w screen
, ale nie są one wyświetlane nigdzie w oknach sesji.
Aby uruchomić tmux
z nazwą sesji, użyj polecenia new
(nowa sesja) i opcji -s
(nazwa sesji). Nasza sesja będzie nazywać się „geek-1”, więc wpisujemy:
tmux nowy -s geek-1
Po załadowaniu sesji tmux
jako pierwszy wpis na pasku stanu po lewej stronie wyświetlany jest „geek-1”.
Dodawanie kolejnych okien
Aby utworzyć nowe okno w bieżącej sesji, naciśnij Ctrl+B, a następnie C. W bieżącej sesji pojawi się puste okno terminala. Więc będziemy mieli coś uruchomionego w tym nowym oknie, uruchommy polecenie dmesg
z opcją -w
(follow):
dmesg -w
Teraz w sesji mamy dwa okna; jeden biegnie top
, a drugi dmesg
. Możemy jednak zobaczyć tylko jeden na raz (więcej o tym za chwilę).
Spójrz na lewą stronę paska stanu. Nadal jesteśmy w sesji tmux
„geek-1”. W oknie zero uruchomiony jest top, aw oknie pierwszym uruchomiony jest dmesg
. Gwiazdka (*) po dmesg
mówi nam, które okno jest widoczne.
Aby przeskakiwać między oknami, naciśnij Ctrl+B, a następnie jeden z następujących klawiszy:
- N : Wyświetl następne okno.
- P: Wyświetl poprzednie okno.
- 0 do 9: Wyświetl okno o numerze od 0 do 9.
Możesz także wybrać okno z listy. Jeśli naciśniesz Ctrl+B, a następnie W, pojawi się lista okien.
Aby przesunąć bursztynowy pasek podświetlenia, naciskaj strzałki w górę lub w dół, Home lub End. Dolna część wyświetlacza pokazuje podgląd treści w podświetlonym oknie.
Naciśnij klawisz Enter, aby przejść do podświetlonego okna, lub Esc, aby opuścić listę okien bez przełączania.
Sesje odłączania i dołączania
Jeśli naciśniesz Ctrl+B, a następnie D, odłączysz sesję. Będzie nadal działać w tle, ale nie będzie można go zobaczyć ani wchodzić z nim w interakcję.
Zaczęliśmy na top
sesji, więc mamy uruchomiony proces do zademonstrowania. Następnie wciskamy Ctrl+B, a potem D. Sesja znika i staje się sesją w tle.
Wracamy do oryginalnego okna terminala. Jest wiadomość z tmux
mówiąca, że sesja została odłączona. Przypomina nam również nazwę, jaką nadaliśmy sesji. Jest to przydatne, ponieważ tego używamy do dołączania do sesji w tle, a następnie przywracania jej do sesji interaktywnej.
Aby dołączyć odłączoną sesję, użyjemy oczywistego polecenia attach-session
z opcją -t
(sesja docelowa). Podamy również nazwę sesji, którą chcemy przypomnieć.
Wpisujemy:
tmux attach-session -t geek-1
Nasza sesja powraca i ponownie staje się widoczną, interaktywną sesją.
Wszelkie długotrwałe lub ciągłe procesy uruchomione przed odłączeniem sesji będą nadal działać w tle (chyba że zostały zakończone) po dołączeniu sesji.
screen
może to zrobić, ale nie tak intuicyjnie.
Obsługa wielu sesji
Otwórzmy kolejne okno terminala i rozpocznijmy nową sesję tmux
o nazwie „geek-2”:
tmux nowy -s geek-2
W tej sesji rozpoczniemy dmesg
:
dmesg -w
Teraz mamy naszą oryginalną sesję tmux
„geek-1” i nową o nazwie „geek-2”.
Pasek stanu pokazuje nam, że ta sesja nazywa się „geek-2” i ma jedno okno, w którym działa dmesg
.
Jeśli naciśniemy Ctrl+B, a następnie D, odłączymy tę sesję.
Wracając do sesji tmux
„geek-1”, wciskamy Ctrl + B, a następnie S, aby wyświetlić listę sesji tmux
.
Żeby było jasne, to jest lista sesji. Podobny ekran, który widzieliśmy wcześniej, był listą okien w jednej sesji.
Możesz przesuwać bursztynowy pasek podświetlenia, naciskając strzałki w górę i w dół, Home i End. Dolna sekcja wyświetla podgląd treści w podświetlonej sesji.
Jeśli naciśniesz strzałkę w prawo, wyświetlą się okna dla podświetlonej sesji.
Naciśnij klawisz Enter, aby przejść do podświetlonej sesji lub okna, albo klawisz Esc, aby opuścić listę sesji bez zmiany sesji. Jeśli wybierzesz nową sesję, bieżąca odłączy się, a wybrana zostanie dołączona.
Odłączyliśmy sesję „geek-2”, zanim to zrobiliśmy. Można to jednak zrobić z sesjami, które nadal są dołączone do ich oryginalnych okien terminala. Gdy to zrobisz, wszelkie zmiany na ekranie pojawią się jednocześnie w obu sesjach tmux
.
Polecenie screen
może to również zrobić za pomocą podobnego zestawu poleceń.
Praca z szybami okiennymi
Jeśli naciśniesz Ctrl+B, a następnie podwójny cudzysłów („”), podzielisz okno poziomo na dwa panele.
Ma to wpływ tylko na bieżące okno; pozostałe w sesji nie zostaną zmienione. tmux ls
w górnym panelu, aby wyświetlić listę okien w tej sesji. Są dwa, a linia stanu mówi nam, że jesteśmy w pierwszym oknie. Jeśli przejdziemy do okna zero, naciskając Ctrl+B, a następnie 0 (zero), zobaczymy, że jest tak, jak je zostawiliśmy.
Są to dwie niezależne linie poleceń, a nie dwa widoki w jednym oknie; są to odrębne i oddzielne muszle. Możemy to pokazać, uruchamiając inne polecenie w każdym okienku.
Wpisujemy:
uname -a
ls -hl
Aby przejść z jednego okienka do drugiego, naciśnij klawisze Ctrl+B, a następnie strzałkę w górę, w dół, w lewo lub w prawo.
Jeśli naciśniesz Ctrl + B, a następnie znak procentu ( %)
, podzieli on bieżący panel w pionie.
Naciśnij Ctrl+B, a następnie Q, aby tmux
na chwilę wyświetlił numer każdego okienka.
Numery te są używane w monitach i wiadomościach z tmux
. Naciśnij klawisze Ctrl+B, a następnie X, aby zamknąć bieżące okienko. Pasek stanu zmieni kolor na bursztynowy i zostanie wyświetlony monit o potwierdzenie, że chcesz zamknąć ten numer okienka. Naciśnij Y, aby usunąć okienko, lub N, aby pozostawić rzeczy bez zmian.
Jeśli naciśniesz Y, okienko zostanie usunięte.
Polecenie screen
ma również panele, ale znowu są mniej intuicyjne w użyciu. Rzeczą, która nas denerwuje w przypadku screen
, jest to, że jeśli odłączysz sesję z panelami, znikną one po ponownym dołączeniu tej sesji. To bardzo szybko się starzeje.
Ściągawka Ctrl+B
Poniżej zamieściliśmy ściągawkę różnych poleceń, których możesz użyć w tmux
.
Polecenia sesji
- S: Lista sesji.
- $: Zmień nazwę bieżącej sesji.
- D: Odłącz bieżącą sesję.
- Ctrl+B, a następnie ?: Wyświetl stronę pomocy w
tmux
.
Polecenia okna
- C: Utwórz nowe okno.
- ,: Zmień nazwę bieżącego okna.
- W: Wymień okna.
- N: Przejdź do następnego okna.
- P: Przejdź do poprzedniego okna.
- 0 do 9: Przejdź do okna o podanym numerze.
Polecenia dotyczące okienka
- %: Utwórz podział poziomy.
- „: Utwórz podział w pionie.
- H lub Strzałka w lewo: Przejdź do okienka po lewej stronie.
- I lub strzałka w prawo: Przejdź do okienka po prawej stronie.
- J lub Strzałka w dół: Przejdź do okienka poniżej.
- K lub strzałka w górę: Przejdź do okienka powyżej.
- P : Krótko pokaż numery okienek.
- O: Poruszaj się po szybach w kolejności. Każde naciśnięcie przenosi cię do następnego, dopóki nie przejdziesz przez nie wszystkie.
- }: Zamień pozycję bieżącego panelu na następny.
- {: Zamień pozycję bieżącego okienka na poprzednią.
- X: Zamknij bieżące okienko.
Jak się porównują
Pod względem funkcjonalności screen
i tmux
działają podobnie i oferują te same główne funkcje. To sposób, w jaki uzyskujesz dostęp do tych funkcji, jest znacząco inny. tmux
oferuje sprawniejsze, wygodniejsze sposoby dostępu do różnych funkcji. To jednak nie jedyna różnica.
Możliwość zmiany nazwy sesji i okien w tmux
jest fajna, a fakt, że zachowuje ona panele po ponownym dołączeniu sesji, zmienia zasady gry.
screen
, z drugiej strony, całkowicie traci okienka po odłączeniu i ponownym dołączeniu sesji. Jest to na tyle denerwujące, że przede wszystkim unikasz odłączania się.
tmux
to znacznie więcej, w tym niewiarygodnie elastyczne możliwości tworzenia skryptów. Jesteś to sobie winien, żeby to sprawdzić.
Polecenia Linuksa | ||
Pliki | tar · pv · kot · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · dysk testowy · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · ogon · stat · ls · fstab · echo · mniej · chgrp · chown · rev · wygląd · stringi · typ · zmiana nazwy · zip · rozpakuj · montuj · umount · zainstaluj · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · konwertuj · rclone · shred · srm | |
Procesy | alias · ekran · top · ładne · renice · postęp · strace · systemd · tmux · chsh · historia · w · wsad · free · co · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · ściana · tak · kill · sen · sudo · su · czas · groupadd · usermod · grupy · lshw · zamknij · restart · halt · poweroff · passwd · lscpu · crontab · data · bg · fg | |
Sieć | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
POWIĄZANE: Najlepsze laptopy z systemem Linux dla programistów i entuzjastów