Articles

Jak używać tmux na Linuksie (i dlaczego jest lepszy niż Screen)

  • Dave McKay

    @TheGurkha

  • May 14, 2020, 8:00am EDT
fatmawati achmad zaenuri/figcaption

polecenie Linux tmuxjest multiplekserem terminala, jak screen. Jego zwolenników jest wielu i wokalnych, więc postanowiliśmy porównać te dwa. Czytmux jest naprawdę lepszy, czy jest to tylko przypadek preferowania tego, co wiesz?

tmux vs. screen

zarówno polecenia tmux, jak i GNU screen są multiplekserami terminali. Pozwalają one na posiadanie wielu okien w jednym oknie terminala i skakanie między nimi. Okno można podzielić na panele, z których każde daje niezależny wiersz poleceń.

Możesz również odłączyć sesję i stanie się ona bezgłowym podmiotem działającym w tle—możesz nawet zamknąć okno terminala, które ją uruchomiło. Gdy będziesz gotowy, możesz otworzyć nowe okno terminala i ponownie podłączyć wciąż działającą sesję. Można to również zrobić przez połączenie SSH.

Reklama

możesz odłączyć sesję na jednym komputerze, wrócić do domu i zalogować się do komputera zdalnego. Po ponownym połączeniu możesz ponownie podłączyć sesję w tle i ponownie użyć jej interaktywnie.

Co to za polecenie screen?

poleceniescreen jest również multiplekserem terminala i jest pełne opcji. Aby dowiedzieć się wszystkiego, co możesz z nim zrobić, zapoznaj się z naszym szczegółowym artykułem.

tym razem skupimy się na tmux. Idąc dalej, wspomnimy, jak screen obsługuje tę samą funkcję lub funkcję.

Reklama

tylko jedno nas denerwuje screen. Zajmiemy się tym, gdy dojdziemy do tego i zobaczymy, czy tmuxbędzie lepiej.

RELATED: jak używać polecenia ekranowego Linuksa

instalowanie tmux

podczas gdy screen jest zazwyczaj instalowane domyślnie na popularnych dystrybucjach Linuksa,tmux nie jest. aby zainstalować tmux na Ubuntu, wpisz następujący:

sudo apt-get install tmux

na Manjaro możesz użyćpacman:

sudo pacman -Sy tmux

na Fedorze 31,tmux jest już zainstalowany.

Rozpoczynanie sesji tmux

aby rozpocząćtmux, po prostu wpisz go i naciśnij Enter:

tmux

okno terminala wyświetli pasek stanu, gdy jesteś wtmux sesja.

po prawej stronie paska stanu znajduje się nazwa hosta oraz godzina i data. Po lewej stronie znajdują się następujące informacje związane z sesją:

  • : To jest nazwa sesji. Domyślnie są ponumerowane, zaczynając od zera. Poniżej omówimy, w jaki sposób można nadać sensowne nazwy sesjom.
  • 0:bash*: 0 oznacza, że jest to pierwsze okno w tej sesji. Jedynym procesem uruchomionym w tej sesji 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.

poleceniescreen nie daje paska stanu. Musisz latać na ślepo i polegać na swoim sprycie, aby wiedzieć, co jest grane, co wymaga trochę praktyki.

Reklama

na plus nie stracisz linii okien terminalowych nieruchomości. Oczywiście normalnie rozszerzyłbyś okno terminala, aby korzystanie z multipleksera terminala było opłacalne. W takim przypadku utrata jednej linii dla paska stanu nie stanowi większego problemu. Zostawiliśmy obrazy okien terminala w domyślnym rozmiarze, abyś mógł zobaczyć informacje.

polecenia są podane do tmux za pomocą naciśnięć klawiszy, i są dwie części do tego. Najpierw naciśnij Ctrl + B, aby uzyskać uwagę tmux. Następnie szybko naciśnij następny klawisz, aby wysłać polecenie do tmux. Polecenia są wydawane przez naciśnięcie liter, cyfr, znaków interpunkcyjnych lub klawiszy strzałek.

jest to samo w screen, z tym, że naciskasz Ctrl+A, aby przyciągnąć jego uwagę.

aby zamknąć okno, naciśnij Ctrl + B, a następnie szybko naciśnij X. pasek stanu zmienia kolor na bursztynowy. Następnie zostaniesz poproszony o potwierdzenie, że chcesz zabić okno.

Reklama

Naciśnij Y, aby zamknąć okno lub N, jeśli zmienisz zdanie. Nie musisz naciskać Enter później; y lub N wystarczy, aby zarejestrować swój wybór.

Po naciśnięciu Y okno się zamyka. Ponieważ jest to jedyne okno w tej sesji, sesja zostaje zakończona.

tmux sesja jest zamknięta, a Ty wracasz do wiersza poleceń, z którego uruchomiłeśtmux. Zobaczysz „” w oknie terminala.

To może wydawać się oczywiste, ale jest to potwierdzenie, że zamknąłeś sesję i nie zostawiłeś jej odłączonej i uruchomionej. Poniżej omówimy sesje odłączania.

Rozpoczynanie nazwanej sesji tmux

Jeśli regularnie uruchamiasz wiele sesjitmux, szybko docenisz funkcjonalność nadawania każdej z nich sensownej nazwy. Sesje można nazwać w screen, ale nie są one wyświetlane nigdzie w oknach sesji.

Reklama

aby uruchomićtmux z nazwą sesji, użyj polecenianew (nowa sesja) i opcji-s (nazwa sesji). Nasza sesja będzie się nazywać „geek-1”, więc wpisujemy:

tmux new -s geek-1

gdy ładuje się tmux sesja,” geek-1 ” jest wyświetlany jako pierwszy wpis na pasku stanu, po lewej stronie.

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
Reklama

teraz mamy dwa okna w sesji; jedno działa top I inne dmesg. Widzimy jednak tylko jeden na raz (więcej o tym za chwilę).

spójrz na lewą stronę paska stanu. Nadal jesteśmy w sesji” geek-1″tmux. W oknie zero działa top, a w oknie pierwszym działadmesg. Gwiazdka ( * ) po dmesg informuje, 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świetla następne okno.
  • P: wyświetla poprzednie okno.
  • 0 do 9: wyświetla okno o numerach od 0 do 9.

Możesz również wybrać okno z listy. Jeśli naciśniesz Ctrl + B, a następnie W, pojawi się lista okien.

Reklama

aby przesunąć bursztynowy Pasek podświetlenia, naciśnij strzałki w górę lub w dół, Home lub End. Dolna część ekranu pokazuje podgląd zawartości podświetlonego okna.

naciśnij klawisz Enter, aby przejść do podświetlonego okna, lub Esc, aby opuścić listę okien bez przełączania.

odłączanie i dołączanie sesji

Jeśli naciśniesz Ctrl+B, a następnie D, odłączysz sesję. Będzie on nadal działał w tle, ale nie będzie można go zobaczyć ani z nim wchodzić w interakcje.

uruchomiliśmy top w sesji, więc mamy uruchomiony proces do zademonstrowania. Następnie naciskamy Ctrl + B, a następnie D. sesja znika i staje się sesją w tle.

Reklama

wracamy do oryginalnego okna terminala. Jest wiadomość z tmux informująca, że sesja jest odłączona. Przypomina nam również nazwę, którą nadaliśmy sesji. Jest to przydatne, ponieważ tego używamy, aby dołączyć do sesji w tle, a następnie przywrócić ją do interaktywnej.

aby dołączyć oddzielną sesję, użyjemy oczywistego poleceniaattach-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 staje się ponownie 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) podczas dołączania sesji.

screen może to zrobić, ale nie tak intuicyjnie.

Obsługa wielu sesji

otwórzmy kolejne okno terminala i rozpocznijmy nową tmux sesję o nazwie „geek-2”:

tmux new -s geek-2

w tej sesji rozpoczniemy dmesg:

dmesg -w
reklama

teraz mamy naszą oryginalną sesję „Geek-1” tmux I nową o nazwie „Geek-2.”

pasek stanu pokazuje nam, że ta sesja nazywa się” geek-2″i ma jedno okno, które działadmesg.

Jeśli naciśniemy Ctrl + B, a następnie D, odłączamy tę sesję.

Reklama

powrót w „geek-1”tmux sesji, naciskamy Ctrl+B, a następnie S, aby zobaczyć listętmux sesji.

aby było jasne, to jest lista sesji. Podobny wyświetlacz, który widzieliśmy wcześniej, to lista okien w jednej sesji.

możesz przesunąć bursztynowy Pasek podświetlenia, naciskając strzałki w górę iw dół, Strona główna i koniec. Dolna sekcja wyświetla podgląd zawartości podświetlonej sesji.

Po naciśnięciu strzałki w prawo zostaną wyświetlone okna podświetlonej sesji.

Reklama

naciśnij klawisz Enter, aby przejść do podświetlonej sesji lub okna lub Esc, aby opuścić listę sesji bez zmiany sesji. Jeśli wybierzesz nową sesję, bieżąca zostanie odłączona, a wybrana zostanie dołączona.

przed tym zakończyliśmy sesję „geek-2”. Można to jednak zrobić w przypadku sesji, które nadal są dołączone do oryginalnych okien terminala. Gdy to zrobisz, wszelkie zmiany ekranu pojawią się jednocześnie w obu sesjach tmux.

polecenie screen może to również zrobić za pomocą podobnego zestawu poleceń.

praca z szybami

Po naciśnięciu Ctrl+B, a następnie podwójnego cudzysłowu („”), dzielisz okno poziomo na dwie szyby.

Reklama

to wpływa tylko na bieżące okno; pozostałe w sesji nie zostaną zmienione. Użyliśmy poleceniatmux ls w górnym panelu, aby wyświetlić listę okien w tej sesji. Są dwa, a linia statusu mówi nam, że jesteśmy w oknie pierwszym. Jeśli przeskoczymy do okna zero naciskając Ctrl + B, a następnie 0 (zero), widzimy, że jest tak, jak go zostawiliśmy.

są to dwie niezależne linie poleceń, a nie dwa widoki w jednym oknie; są to odrębne i oddzielne powłoki. 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 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 procentowy (%) dzieli bieżący panel pionowo.

Reklama

naciśnij Ctrl+B, a następnie Q, aby tmux krótko migać numer każdego panelu.

te numery są używane w monitach i wiadomościach ztmux. Naciśnij Ctrl + B, a następnie X, aby zamknąć bieżący panel. Pasek stanu zmieni się na pomarańczowy i zostaniesz poproszony o potwierdzenie, że chcesz zamknąć ten numer panelu. Naciśnij Y, aby usunąć okienko, lub N, aby pozostawić rzeczy takimi, jakie są.

Jeśli naciśniesz Y, okienko zostanie usunięte.

poleceniescreen ma również panele, ale ponownie są mniej intuicyjne w użyciu. Rzeczą, która denerwuje nas w screen jest to, że jeśli odłączysz sesję za pomocą paneli, znikną one po ponownym podłączeniu tej sesji. To bardzo szybko się starzeje.

a Ściągawka Ctrl+B

poniżej zamieściliśmy ściągawkę różnych poleceń, których możesz użyć wtmux.

polecenia sesji

  • s: Lista sesji.
  • $: zmiana nazwy bieżącej sesji.
  • D: Odłącz bieżącą sesję.
  • Ctrl+B, a potem ?: Wyświetla stronę pomocy w tmux.

polecenia okna

  • C: Utwórz nowe okno.
  • ,: zmiana nazwy bieżącego okna.
  • w: Lista okien.
  • n: przejście do następnego okna.
  • P: przejście do poprzedniego okna.
  • 0 do 9: Przenieś do podanego numeru okna.

polecenia Panelu

  • %: Utwórz podział poziomy.
  • „: Utwórz podział pionowy.
  • 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 panelu poniżej.
  • K lub Strzałka w górę: przejdź do panelu powyżej.
  • Q: krótko pokazuje numery okien.
  • O: przechodzić przez szyby w kolejności. Każde naciśnięcie przenosi cię do następnego, aż przejdziesz przez wszystkie z nich.
  • }: Zamień pozycję bieżącego panelu na następny.
  • {: Zamień pozycję bieżącego panelu na poprzednią.
  • X: Zamknij bieżący panel.

jak porównują

pod względem funkcjonalności,screen Itmux działają podobnie i oferują te same główne funkcje. To sposób, w jaki uzyskujesz dostęp do tych funkcji, jest znacznie inny. tmux oferuje wygodniejsze i wygodniejsze sposoby dotarcia do różnych funkcji. Jednak to nie jedyna różnica.

Reklama

możliwość zmiany nazw sesji i okien w tmux jest schludna, a fakt, że zachowuje panele po ponownym podłączeniu sesji, zmienia grę.

screen, z drugiej strony, całkowicie traci panele po odłączeniu i ponownym podłączeniu sesji. Jest to prawie wystarczająco denerwujące, aby uniknąć odłączania w pierwszej kolejności.

tmux to znacznie więcej, w tym niezwykle elastyczne możliwości skryptowania. Jesteś sobie winien, żeby to sprawdzić.

Dave McKay
Dave McKay po raz pierwszy użył komputerów, gdy taśma perforowana była w modzie i od tego czasu programuje. Po ponad 30 latach pracy w branży IT, obecnie jest dziennikarzem technologicznym na pełny etat. W trakcie swojej kariery pracował jako niezależny Programista, Kierownik międzynarodowego zespołu programistycznego, kierownik projektów usług IT, a ostatnio jako Inspektor Ochrony Danych. Dave jest ewangelistą Linuksa i zwolennikiem open source.Przeczytaj cały Biogram „