Как да използвате tmux на Linux (и защо е по-добър от екрана)

Командата tmux на Linux е терминален мултиплексор, подобен на екрана. Неговите защитници са много и гласови, затова решихме да сравним двете. Наистина ли tmux е по-добър или просто предпочитате това, което знаете?

Съдържание

tmux срещу екран

И двете екранни команди tmux и GNU са терминални мултиплексори. Те ви позволяват да имате няколко прозореца в рамките на един прозорец на терминала и да прескачате напред-назад между тях. Прозорецът може да бъде разделен на панели, всеки от които ви дава независим команден ред.

Можете също да отделите сесия и тя да се превърне в обект без глава, работещ на заден план – можете дори да затворите прозореца на терминала, който го е стартирал. Когато сте готови, можете да отворите нов прозорец на терминала и да свържете отново все още работещата сесия. Можете също да направите това през SSH връзка.

Можете да отделите сесия на един компютър, да се приберете вкъщи и да влезете в отдалечения компютър. Когато се свържете отново, можете да свържете отново фоновата сесия и да я използвате интерактивно отново.

Каква е командата на екрана?

Командата на екрана също е терминален мултиплексор и е пълна с опции. За краткото описание на всичко, което можете да правите с него, вижте нашата задълбочена статия.

Този път ще го направим концентрирайте се върху tmux. Докато продължаваме, ще споменем как екранът обработва същата функция или функция.

Само едно нещо ни дразнеше за екрана. Ще покрием това, когато стигнем до него, и ще видим дали tmux ще се справи по-добре.

Инсталиране на tmux

Докато screen обикновено се инсталира по подразбиране в популярните Linux дистрибуции, tmux не е така. За да инсталирате tmux на Ubuntu, въведете следното:

sudo apt-get install tmux

На Manjaro можете да използвате pacman:

sudo pacman -Sy tmux

На Fedora 31 tmux вече е инсталиран.

Стартиране на tmux сесия

За да стартирате tmux, просто го въведете и натиснете Enter:

tmux

Прозорецът на терминала ще покаже лента на състоянието, когато сте в tmux сесия.

  Как да играете сериите игри Marathon на Bungie на Linux

Дясната страна на лентата на състоянието показва името на хоста, часа и датата. Лявата страна показва следната информация, свързана с сесията:

[0]: Това е името на сесията. По подразбиране те са номерирани, започвайки с нула. По-долу разглеждаме как можете да дадете смислени имена на сесиите.
0:bash*: 0 показва, че това е първият прозорец в тази сесия. Единственият процес, който се изпълнява в тази сесия, е bash. Ако стартирате програма, нейното име ще се появи тук. звездичката

означава, че това е прозорецът, който гледате. Всеки път, когато създавате нов прозорец в tmux сесия, неговият номер на прозорец и името на програмата, която се изпълнява в него, се добавят към лентата на състоянието.

Командата на екрана не ви дава лента на състоянието. Трябва да летите на сляпо и да разчитате на разума си, за да разберете какво се случва, което изисква малко практика.

Положителната страна е, че няма да загубите редица недвижими имоти с прозорци на терминала. Разбира се, обикновено ще разширите прозореца на терминала, за да си струва използването на терминален мултиплексор. В този случай загубата на един ред за лентата на състоянието не е голям проблем. Тук сме оставили изображенията на прозорците на терминала с размер по подразбиране, за да можете да видите информацията.

Командите се дават на tmux с натискане на клавиши и това има две части. Първо, натискате Ctrl+B, за да привлечете вниманието на tmux. След това бързо натиснете следващия клавиш, за да изпратите команда totmux. Командите се подават чрез натискане на букви, цифри, препинателни знаци или клавиши със стрелки.

Същото е и на екрана, освен че натиснете Ctrl+A, за да привлечете вниманието му.

За да затворите прозореца, натиснете Ctrl+B и след това бързо натиснете X. Лентата на състоянието става кехлибарена. След това ще бъдете подканени да потвърдите, че искате да убиете прозореца.

Натиснете Y, за да затворите прозореца, или N, ако промените решението си. Не е нужно да натискате Enter след това; Y или N са достатъчни, за да регистрирате своя избор.

Ако натиснете Y, прозорецът се затваря. Тъй като това е единственият прозорец в тази сесия, сесията се прекратява.[exited]Сесията на tmux е затворена и вие се връщате към командния ред, от който сте стартирали tmux. Ще видите „

” в прозореца на терминала.

Това може да изглежда като заявява очевидното, но това е потвърждение, че сте затворили сесията и не сте я оставили отделена и работеща. Ще обсъдим отделните сесии по-долу.

Стартиране на именувана tmux сесия

Ако редовно започвате няколко tmux сесии, бързо ще оцените функционалността да дадете на всяка от тях смислено име. Можете също да наименувате сесии на екрана, но те не се показват никъде в прозорците на сесиите.

tmux new -s geek-1

За да стартирате tmux с име на сесия, използвайте командата new (нова сесия) и опцията -s (име на сесията). Нашата сесия ще се нарича „geek-1“, така че въвеждаме следното:

Когато сесията tmux се зареди, „geek-1“ се показва като първи запис в лентата на състоянието, най-вляво.

tmux сесия с името

Добавяне на още Windows За да създадете нов прозорец в текущата сесия, натиснете Ctrl+B и след това C. Ще получите празен прозорец на терминала в текущата сесия. Така че ще имаме нещо, което работи в този нов прозорец, нека започнем команда dmesg

dmesg -w

с опцията -w (следване):

  Как да шифровате файлове с gocryptfs на Linux

Сега имаме два прозореца в сесията; единият е отгоре, а другият dmesg. Можем обаче да видим само един по един (повече за това след малко).

Погледнете лявата страна на лентата на състоянието. Все още сме в tmux сесията “geek-1”. В прозорец нула работи top, а в прозорец 1 dmesg работи. звездичката

след dmesg ни казва кой прозорец се вижда.
За да прескачате между прозорците, натиснете Ctrl+B и след това един от следните клавиши:
N: Показване на следващия прозорец.

P: Показване на предишния прозорец.

0 до 9: Показване на прозорец с номера от 0 до 9.

Можете също да изберете прозорец от списък. Ако натиснете Ctrl+B и след това W, се появява списък с прозорци.

За да преместите кехлибарената лента за осветяване, натиснете стрелките нагоре или надолу, Начало или Край. Долната част на дисплея показва предварителен преглед на съдържанието в маркирания прозорец.

Натиснете Enter, за да преминете към маркирания прозорец, или Esc, за да напуснете списъка с прозорци, без да превключвате.

Отделяне и прикачване на сесии

Ако натиснете Ctrl+B и след това D, ще отделите сесията. Той ще продължи да работи във фонов режим, но няма да можете да го виждате или да взаимодействате с него.

Започнахме отгоре в сесията, така че имаме работещ процес, с който да демонстрираме. След това натискаме Ctrl+B и след това D. Сесията изчезва и се превръща във фонова сесия.

Връщаме се към оригиналния прозорец на терминала. Има съобщение от tmux, което ни казва, че сесията е отделена. Това също ни напомня за името, което дадохме на сесията. Това е удобно, защото това е, което използваме, за да прикачим към фонова сесия и след това да я възстановим в интерактивна.

tmux attach-session -t geek-1

За да прикачим отделна сесия, ще използваме разбиращата се команда attach-session с опцията -t (целева сесия). Ще предоставим и името на сесията, която искаме да си припомним.

Пишем следното:

Нашата сесия се връща и отново става видима интерактивна сесия.

Всички продължителни или непрекъснати процеси, които сте стартирали преди отделянето на сесията, ще продължат да работят на заден план (освен ако не са приключили), когато прикачите сесията.

screen може да направи това, но не толкова интуитивно.

tmux new -s geek-2

Обработване на множество сесии

dmesg -w

Нека отворим друг прозорец на терминала и да започнем нова tmux сесия, наречена „geek-2“:

В тази сесия ще стартираме dmesg:

Сега имаме нашата оригинална „geek-1“ tmux сесия и нова, наречена „geek-2“.

Лентата на състоянието ни показва, че тази сесия се нарича „geek-2“ и има един прозорец, който изпълнява dmesg.

Ако натиснете Ctrl+B и след това D, ще отделим тази сесия.

Обратно в tmux сесията „geek-1“ натискаме Ctrl+B и след това S, за да видим списък с tmux сесии.

За да бъде ясно, това е списък със сесиите. Подобният дисплей, който видяхме по-рано, беше списък с прозорци в една сесия.

Можете да преместите кехлибарената лента за осветяване, като натиснете стрелките нагоре и надолу, Начало и Край. Долната секция показва визуализация на съдържанието в маркираната сесия.

  Как да редактирате PPA в Linux Mint

Ако натиснете стрелката надясно, се показват прозорците за маркираната сесия.

Натиснете Enter, за да преминете към маркираната сесия или прозорец, или Esc, за да напуснете списъка със сесии, без да променяте сесиите. Ако изберете нова сесия, текущата ви се отделя и избраната от вас се прикачва.

Отделихме сесията „geek-2“, преди да направим това. Можете обаче да направите това със сесии, които все още са прикачени към оригиналните им терминални прозорци. Когато го направите, всички промени на екрана ще се появят едновременно и в двете tmux сесии.

Командата на екрана също може да направи това чрез подобен набор от команди.

Работа с прозорци

Ако натиснете Ctrl+B и след това двойни кавички (“”), ще разделите прозореца хоризонтално на два панела.

Това засяга само текущия прозорец; останалите в сесията няма да бъдат променени. Използвахме командата tmux ls в горния панел, за да изброим прозорците в тази сесия. Има две и редът на състоянието ни казва, че сме в прозорец едно. Ако прескочим до прозорец нула чрез натискане на Ctrl+B и след това 0 (нула), виждаме, че е точно както го оставихме.

Това са два независими командни реда, а не два изгледа в един прозорец; те са отделни и отделни черупки. Можем да покажем това, като изпълним различна команда във всеки панел.

Пишем следното:

uname -a

ls -hl

За да преминете от един панел към друг, натиснете Ctrl+B и след това или стрелката нагоре, надолу, наляво или надясно.

Ако натиснете Ctrl+B и след това знака за процент (%), текущият панел се разделя вертикално.

Натиснете Ctrl+B и след това Q, за да накарате tmux да мига за кратко номера на всеки панел.

Тези числа се използват в подкани и съобщения от tmux. Натиснете Ctrl+B и след това X, за да затворите текущия прозорец. Лентата на състоянието се променя на кехлибарена и ще бъдете подканени да потвърдите, че искате да затворите този номер на панела. Натиснете Y, за да премахнете панела, или N, за да оставите нещата както са.

Ако натиснете Y, панелът се премахва.

Командата screen също има панели, но, отново, те са по-малко интуитивни за използване. Нещото, което ни дразни при екрана, е, че ако отделите сесия с панели, те изчезват, когато прикачите отново тази сесия. Това остарява много бързо.

A Ctrl+B Cheat Sheet

Включихме измамник на различните команди, които можете да използвате в tmux по-долу.
Команди за сесия
S: Избройте сесиите.
$: Преименувайте текущата сесия.

D: Отделяне на текущата сесия.

Ctrl+B и след това ?: Показване на помощната страница в tmux.
Команди на прозореца
C: Създайте нов прозорец.
,: Преименувайте текущия прозорец.
W: Избройте прозорците.
N: Преминете към следващия прозорец.

P: Преминете към предишния прозорец.

0 до 9: Преминете към посочения номер на прозореца.
Команди на панела
%: Създаване на хоризонтално разделяне.
“: Създаване на вертикално разделяне.
H или стрелка наляво: Придвижете се до панела отляво.
I или стрелка надясно: Придвижете се до панела вдясно.
J или стрелка надолу: Преминете към панела по-долу.
K или стрелка нагоре: Преминете към горния панел.
В: Покажете накратко номерата на панела.
O: Придвижете се през панелите в ред. Всяко натискане ви отвежда до следващото, докато не прегледате всички.
}: Разменете позицията на текущия панел със следващия.

{: Разменете позицията на текущия панел с предишния.

X: Затворете текущия прозорец.

Как се сравняват

По отношение на функционалността, екранът и tmux работят по сходен начин и предлагат едни и същи основни характеристики. Това е начинът, по който имате достъп до тези функции, който е значително различен. tmux предлага по-хлъзгави и по-удобни начини за достигане до различните функции. Това обаче не е единствената разлика.

Възможността за преименуване на сесии и прозорци в tmux е чиста, а фактът, че запазва панелите, когато прикачите отново сесия, променя играта.

екранът, от друга страна, напълно губи панелите, когато отделите и прикачите отново сесия. Това е почти достатъчно досадно, за да ви накара да избегнете отделянето на първо място.

Има много повече за tmux, включително неговите невероятно гъвкави възможности за скриптиране. Дължиш на себе си да го провериш.