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

Стилизиран Linux терминал на лаптоп с шел сесии във фонов режим.

fatmawati achmad zaenuri/Shutterstock.com



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

tmux срещу екран

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





10 основни Linux команди за начинаещи СВЪРЗАНИ 10 основни Linux команди за начинаещи

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

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



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

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

Реклама

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

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



СВЪРЗАНИ: Как да използвате екранната команда на Linux

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

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

tmux

На Manjaro можете да използвате |_+_|:

screen

На Fedora 31, |_+_| вече е инсталиран.

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

За да започнете |_+_|, просто го въведете и натиснете Enter:

tmux

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

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

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

|_+_| командата не ви дава лента на състоянието по подразбиране. Трябва да летите на сляпо и да разчитате на разума си, за да разберете какво се случва, което изисква малко практика. (Освен ако вие конфигурирайте своя собствена лента на състоянието .)

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

Реклама

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

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

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

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

Ако натиснете Y, прозорецът се затваря. Тъй като това е единственият прозорец в тази сесия, сесията се прекратява.

|_+_| сесията е затворена и вие се връщате към командния ред, от който сте стартирали |_+_|. Ще видите [exited] в прозореца на терминала.

Реклама

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

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

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

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

tmux

Когато |_+_| сесията се зарежда, geek-1 се показва като първи запис в лентата на състоянието, най-вляво.

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

Добавяне на още Windows

За да създадете нов прозорец в текущата сесия, натиснете Ctrl+B и след това C. Ще получите празен прозорец на терминала в текущата сесия. Така че ще имаме нещо, което работи в този нов прозорец, нека започнем |_+_| команда с |_+_| (следвайте) опция:

screen

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

Реклама

Погледнете лявата страна на лентата на състоянието. Все още сме в geek-1 |_+_| сесия. В прозорец нула горната част се изпълнява, а в прозорец едно, |_+_| бяга. Звездичката (*) след |_+_| ни казва кой прозорец се вижда.

За да прескачате между прозорците, натиснете Ctrl+B и след това един от следните клавиши:

    н : Показване на следващия прозорец. П:Показване на предишния прозорец. 0 до 9:Покажете прозорец с номера от 0 до 9.

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

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

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

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

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

Реклама

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

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

За да прикачите отделна сесия, ще използваме разбираемия |_+_| команда с |_+_| опция (целева сесия). Ще предоставим и името на сесията, която искаме да си припомним.

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

screen

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

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

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

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

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

tmux

В тази сесия ще започнем |_+_|:

screen

Реклама

Сега имаме нашия оригинален geek-1 |_+_| сесия и нова, наречена geek-2.

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

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

Отделен tmux session geek-2 в терминал widnow.

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

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

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

Реклама

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

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

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

|_+_| командата може да направи и това чрез подобен набор от команди.

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

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

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

Реклама

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

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

screen

tmux

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

Две различни команди в два панела в tmux сесия в терминална вдовица.

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

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

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

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

Реклама

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

A Ctrl+B Cheat Sheet

Включихме измамник на различните команди, които можете да използвате в |_+_| По-долу.

Команди за сесия

    С:Избройте сесиите. $:Преименувайте текущата сесия. Д:Отделяне на текущата сесия. Ctrl+B и след това ?:Показване на помощната страница в |_+_|.

Команди на прозореца

    ° С:Създайте нов прозорец. ,:Преименувайте текущия прозорец. В:Избройте прозорците. Н:Преминете към следващия прозорец. П:Преминете към предишния прозорец. 0 до 9:Преминете към посочения номер на прозореца.

Команди на панела

    %:Създайте хоризонтално разделяне. :Създайте вертикално разделяне. H или стрелка наляво:Преминете към панела отляво. Аз или стрелка надясно:Преминете към панела вдясно. J или стрелка надолу:Преминете към панела по-долу. K или стрелка нагоре:Преминете към горния панел. В: Покажете накратко номерата на панела. ИЛИ:Придвижвайте се през панелите в ред. Всяко натискане ви отвежда до следващото, докато не прегледате всички. }:Разменете позицията на текущия панел със следващия. {:Разменете позицията на текущия панел с предишния. Х:Затворете текущия прозорец.

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

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

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

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

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

Linux команди
Файлове катран · pv · котка · такт · chmod · сцепление · разл · sed · С · човек · pushd · popd · fsck · тестов диск · сек · fd · пандока · CD · $PATH · awk · присъединяване · jq · сгънете · уникален · journalctl · опашка · състояние · ls · fstab · изхвърли · по-малко · chgrp · chown · rev · виж · струни · Тип · преименувайте · цип · разархивирайте · монтиране · umount · Инсталирай · fdisk · mkfs · rm · rmdir · rsync · df · gpg · ние · нано · mkdir · от · вътрешен · кръпка · преобразувам · rclone · накъсайте · SRM
процеси псевдоним · екран · връх · хубаво · renice · напредък · strace · система · tmux · chsh · история · в · партида · Безплатно · който · dmesg · потребителски мод · п.с · chroot · xargs · tty · мизичко · lsof · vmstat · изчакване · стена · да · убиват · сън · sudo · неговата · време · groupadd · потребителски мод · групи · lshw · изключвам · рестартирайте · Спри се · изключване · passwd · lscpu · crontab · дата · bg · fg
Работа в мрежа netstat · пинг · трасиране · ip · ss · кой е · fail2ban · bmon · Вие · пръст на ръката · nmap · ftp · къдрица · wget · Кой · кой съм аз · В · iptables · ssh-keygen · ufw

СВЪРЗАНИ: Най-добрите Linux лаптопи за разработчици и ентусиасти

ПРОЧЕТЕТЕ СЛЕДВАЩО Снимка на профила на Дейв Маккей Дейв Маккей
Дейв Маккей за първи път използва компютри, когато перфорираната хартиена лента беше на мода и оттогава той програмира. След повече от 30 години в ИТ индустрията, той вече е технологичен журналист на пълен работен ден. По време на кариерата си той е работил като програмист на свободна практика, мениджър на международен екип за разработка на софтуер, ръководител на проекти за ИТ услуги и, последно, като служител по защита на данните. Неговото писане е публикувано от howtogeek.com, cloudsavvyit.com, tenterpriser.com и opensource.com. Дейв е евангелист на Linux и привърженик на отворен код.
Прочетете пълната биография

Интересни Статии