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).
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:
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 sesjas
- lista sesji$
- nazwa sesji (można ją tutaj wyświetlić a także zmienić)
-
Okna (windows)
c
- tworzenie kolejnego oknaw
- lista okienn
- następne oknop
- poprzednie oknof
- 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 paneq
- pokaż numer panex
- zamknij pane+
- usunięcie pane do okna-
- przywrócenie pane z oknaspacja
- 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órzez
- 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