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

  • Dave McKay

    @ TheGurkha

  • 14 maja 2020, 08:00
fatmawati achmad zaenuri/

polecenie Linux tmuxjest multiplekserem terminala, jak screen. Jego zwolenników jest wielu i wokalnych, więc postanowiliśmy porównać te dwa. tmux naprawdę lepiej, czy 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 jest polecenie screen?

polecenie screen 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 denerwowało screen. Zajmiemy się tym, gdy dojdziemy do tego i zobaczymy, czy tmux będzie lepiej.

RELATED: Jak korzystać z 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, wpisz ją i naciśnij Enter:

tmux

okno terminala wyświetli pasek stanu podczas sesji tmux.

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 sesji tmux, jego numer okna i nazwa uruchomionego w nim programu są dodawane do paska stanu.

polecenie screen 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 dotmux. Polecenia są wydawane przez naciśnięcie liter, cyfr, znaków interpunkcyjnych lub klawiszy strzałek.

jest tak 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.

sesja tmux zostaje zamknięta, a Ty powracasz 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 rozpoczynasz wiele sesji tmux, szybko docenisz funkcjonalność nadawania każdej z nich znaczącej nazwy. Sesje można również nazywać w screen, ale nie są one wyświetlane nigdzie w oknach sesji.

Reklama

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

tmux new -s geek-1

po załadowaniu sesji tmux, „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, zacznijmy polecenie dmesg z opcją -w (follow) :

dmesg -w
Reklama

teraz mamy dwa okna w sesji; jeden działa top, a drugi 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ła 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ś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ół, Strona główna lub koniec. 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.

rozpoczęliś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ść od tmux, ż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ć odłączoną sesję, użyjemy oczywistego polecenia attach-session z opcją -t (sesja docelowa). Podamy również nazwę sesji, którą chcemy przypomnieć.

wpisujemy następujące:

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 zaczniemy 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ła dmesg.

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.

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

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

praca z szybami

jeśli naciśniesz Ctrl + B, a następnie podwójne cudzysłowy ( „” ), podzielisz okno poziomo na dwie szyby.

Reklama

to wpływa tylko na bieżące okno; pozostałe w sesji nie zostaną zmienione. Użyliśmy polecenia tmux 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 następujące:

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ć liczbę każdego panelu.

te numery są używane w monitach i wiadomościach z tmux. 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.

polecenie screen 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ć w tmux.

polecenia sesji

  • S: Lista sesji.
  • $: Zmień nazwę bieżącej sesji.
  • D: odłącz bieżącą sesję.
  • Ctrl + B, a potem ?: Wyświetl stronę pomocy w tmux.

polecenia okna

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

polecenia Panelu

  • %: Utwórz poziomy podział.
  • „: 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.
  • P: krótko Pokaż numery okien.
  • O:przesuwaj 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 i tmux oba 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 gładsze, 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 szyby po odłączeniu i ponownym podłączeniu sesji. Jest to prawie wystarczająco denerwujące, aby uniknąć odłączania w pierwszej kolejności.

w tmux jest o wiele więcej, w tym niesamowicie elastyczne możliwości skryptów. 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 „