Tmux — alternatywa dla aplikacji Screen

Poradniki
vps, zarządzanie
Bodzio
Bodzio

Hej, chciałbym wam przedstawić narzędzie Tmux czyli alternatywę dla aplikacji Screen.


I. Co to jest?

Tak więc tak samo, jak Screen, Tmux to narzędzie umożliwiające tworzenie wirtualnych terminali, które po rozłączeniu z ssh może nadal działać w tle i np. utrzymywać serwer gry przez 24 godziny na dobę. Kolejną zaletą wirtualnych terminali jest łatwość przełączania się między różnymi aplikacjami w jednym terminalu.

II. Instalacja Tmuxa:

Ubuntu / Debian

sudo apt update
sudo apt install tmux

CentOS / Fedora

yum check-update
yum update
sudo yum install tmux

W przypadku konta root nie trzeba pisać sudo.

III. Przydatne komendy:

W tej sekcji znajdziesz wszystkie potrzebne ci polecenia, do pracy z wirtualnymi terminalami.

a) Tworzenie wirtualnego terminala/sesji

tmux

Tworzy nową sesję i od razu uruchamia okno wirtualnego terminala. Wówczas możemy od razu zacząć na nim pracować.

tmux new -s nazwa

Robi dokładnie to samo, ale przy okazji daje nam możliwość ustawienia własnej nazwy. Wystarczy zastąpić nazwa swoją nawą np. serwer-minecraft.

A tak wygląda przykładowy wirtualny terminal, na dole jest widoczny zielony pasek, na którym widać na przykład nazwe sesji (test). image|690x378, 75%


b) Jak wyjść z wirtualnego terminala?

Wychodzenie z sesji (będzie on działać w tle)

- Należy kliknąć "Ctrl + B" następnie kliknąć "D".

Wychodzenie z sesji oraz przerwanie jej działania (nie będzie działać w tle)

- Należy kliknąć "Ctrl + B" następnie kliknąć "X" po czym potwierdzić wpisując "Y".

c) Powrót do wcześniej utworzonej sesji

Najpierw wpisujemy

tmux ls

Wyświetli nam się lista naszych sesji przykład:

image|632x61 W tym przykładzie są trzy sesje o nazwach: 0, serwer-minecraft oraz serwer-minecraft2. Żeby powrócić do sesji np. serwer-minecraft należy wpisać:

tmux a -t serwer-minecraft

d) Zamykanie wszystkich sesji Tmuxa:

Czasem może nam się przydać komenda zamykająca wszystkie uruchomione sesji. Dlatego postanowiłem ją tutaj zamieścić.

tmux ls | grep : | cut -d. -f1 | awk '{print substr($1, 0, length($1)-1)}' | xargs kill

IV. Praca z oknami oraz ich podziałem:

W Tmuxie można zarówno stworzyć kilka okien (windows) w sesji, jak i można podzielić jedno okno na kilka (panes).

Lista dostępnych skrótów, każdy skrót poprzedzaj kliknięciem Ctrl+B, a następnie po puszczeniu klawiszy kliknij odpowiedni skrót:

  • Sesje (session)

    • :new - nowa sesja
    • s - lista sesji
    • $ - nazwa sesji (można ją tutaj wyświetlić a także zmienić)
  • Okna (windows)

    • c - tworzenie kolejnego okna
    • w - lista okien
    • n - następne okno
    • p - poprzednie okno
    • f - szukanie okna
    • , - nazwa okna (można ją tutaj wyświetlić a także zmienić)
    • & - zamknięcie okna
  • Podział okien (panes):

    • % - podział wertykalny (lewo-prawo)
    • " - podział horyzontalny (góra-dół)
    • o - przełącz się między pane
    • q - pokaż numer pane
    • x - zamknij pane
    • + - usunięcie pane do okna
    • - - przywrócenie pane z okna
    • spacja - zmiana rodzaju podziału okien (wertykalnie/horyzontalnie)
    • q - pokazuje numery pane, w momencie gdy są widoczne można kliknąć numer i się do niego przenieść.
    • { - przeniesienie z aktualnego pane do następnego po lewej/na dole
    • } - przeniesienie z aktualnego pane do następnego po prawej/na górze
    • z - przełączanie widoku pane (czy ma być widoczny)

V. Uruchamianie serwera Minecraft w Tmuxie:

Tworzymy nową sesje o nazwie np. serwer-mc:

tmux new -s serwer-mc

W sesji wchodzimy do folderu z serwerem a następnie wpisujemy polecenie którym uruchamiamy serwer:

cd serwer-minecraft
java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui

Po wszystkim wystarczy opuścić sesje: Klikamy "CTRL + B" a potem klikamy "D". Gotowe 😄.


W tym przypadku przydzieliłem na serwer 1GB ramu. A mój silnik ma nazwę minecraft_server.jar.

W przypadku innych serwerów np. TeamSpeak 3 wygląda to podobnie, po prostu jest inne polecenie startowe.

VI. Kilka słów na koniec

Jeżeli czegoś brakuje, napiszcie na pw lub pod tematem, to dodam/poprawie informacje. Chciałem napisać jeszcze różnice między Screenem a Tmuxem, ale żadnych większych różnic nie znalazłem i stwierdziłem, że nie warto w ogóle o tym pisać, chyba że chcecie, to coś dopiszę.

Główne źródła: https://linuxize.com/post/getting-started-with-tmux/ https://gist.github.com/MohamedAlaa/2961058