Tmux — alternatywa dla aplikacji Screen

Bodzio | 2020-04-14 21:47:33 UTC | #1

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%](upload://pwJPCXfdqNOMHpfMoRmnkWX12pB.png) 

---

**b) Jak wyjść z wirtualnego terminala?**

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

**c) Powrót do wcześniej utworzonej sesji**

Najpierw wpisujemy

tmux ls

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

![image|632x61](upload://9S0OWm14LtxoGnqVQ5WcqOLsP55.png) 
W tym przykładzie  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  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  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 :smile:.


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