Вверх

Как использовать tmux в Linux (и почему он лучше экрана)

11 марта 2021 |

Как использовать tmux в Linux (и почему он лучше экрана)

A stylized Linux terminal on a laptop with shell sessions in the background. fatmawati achmad zaenuri / Shutterstock

Команда Linux tmux — это терминальный мультиплексор, такой как screen. Его сторонников много, и мы решили сравнить их. Действительно ли tmux лучше, или это просто случай предпочтения того, что вы знаете?

tmux vs. screen

И tmux, и экранные команды GNU являются терминальными мультиплексорами. Они позволяют иметь несколько окон в одном окне терминала и переключаться между ними. Окно можно разделить на панели, каждая из которых дает вам независимую командную строку.

Вы также можете отсоединить сеанс, и он станет автономным объектом, работающим в фоновом режиме — вы даже можете закрыть запущенное окно терминала. Это. Когда вы будете готовы, вы можете открыть новое окно терминала и повторно подключить все еще работающий сеанс. Вы также можете сделать это через SSH-соединение.

Вы можете отключить сеанс на одном компьютере, вернуться домой и войти в систему на удаленном компьютере. При повторном подключении вы можете повторно подключить фоновый сеанс и снова использовать его в интерактивном режиме.

Что такое экранная команда?

Экранная команда также является мультиплексором терминала и имеет множество опций. Подробную информацию обо всем, что с ним можно сделать, можно найти в нашей подробной статье.

На этот раз мы сосредоточимся на tmux. По мере продвижения мы будем упоминать, как screen обрабатывает одну и ту же функцию или функцию.

В screen нас раздражало только одно. Мы расскажем об этом, когда дойдем до этого, и посмотрим, будет ли 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.

В правой части строки состояния отображается имя хоста, а также время и дата. Слева отображается следующая информация, относящаяся к сеансу:

  • [0]: это имя сеанса. По умолчанию они нумеруются, начиная с нуля. Мы расскажем, как можно давать значимые имена сеансам ниже.
  • 0: bash *: 0 указывает, что это первое окно в этом сеансе. Единственный процесс, запущенный в этом сеансе, — это bash. Если вы запустите программу, здесь появится ее имя. Звездочка (*) означает, что это то окно, в которое вы смотрите. Каждый раз, когда вы создаете новое окно в сеансе tmux, его номер окна и имя запущенной в нем программы добавляются в строку состояния.

Экранная команда не отображает строку состояния. Вы должны летать вслепую и полагаться на свое остроумие, чтобы знать, что происходит, а для этого нужно немного практики.

С другой стороны, вы не потеряете ни единой части окна терминала. Конечно, вы обычно расширяете окно терминала, чтобы использовать терминальный мультиплексор. В этом случае потеря одной строки в строке состояния не является большой проблемой. Здесь мы оставили изображения окон терминала с размером по умолчанию, чтобы вы могли видеть информацию.

Команды передаются tmux с помощью нажатия клавиш, и это состоит из двух частей. Сначала вы нажимаете Ctrl + B, чтобы привлечь внимание tmux. Затем вы быстро нажимаете следующую клавишу, чтобы отправить команду totmux. Команды даются нажатием букв, цифр, знаков препинания или клавиш со стрелками.

То же самое на экране, за исключением того, что вы нажимаете Ctrl + A, чтобы привлечь его внимание.

Чтобы закрыть окно, нажмите Ctrl + B, а затем быстро нажмите X. Строка состояния станет желтой. Затем вам будет предложено подтвердить, что вы хотите закрыть окно.

Нажмите Y, чтобы закрыть окно, или N, если вы передумали. Вам не нужно нажимать Enter после этого, Y или N достаточно, чтобы зарегистрировать ваш выбор.

Если вы нажмете Y, окно закроется. Поскольку это единственное окно в этом сеансе, сеанс завершается.

Сеанс tmux закрыт, и вы вернетесь в командную строку, из которой вы запустили tmux. В окне терминала вы увидите «[завершено]».

Это может показаться очевидным, но это подтверждение того, что вы закрыли сеанс и не оставили его отключенным и запущенным. Мы обсудим сеансы отсоединения ниже.

Запуск именованного сеанса tmux

Если вы регулярно запускаете несколько сеансов tmux, вы быстро оцените возможность присвоения каждому из них значимого имени. Вы также можете назвать сеансы на экране, но они нигде не отображаются в окнах сеансов.

Чтобы запустить tmux с именем сеанса, используйте команду new (новый сеанс) и -s (сеанс имя) вариант. Наш сеанс будет называться «geek-1», поэтому мы вводим следующее:

tmux new -s geek-1

Когда сеанс tmux загружается, «Geek-1» отображается как первая запись в строке состояния слева.

A tmux session with the name geek-1 on the left side of the status bar.

Добавление дополнительных окон

Чтобы создать новое окно в текущем сеанса, нажмите Ctrl + B, а затем C. Вы получите пустое окно терминала в текущем сеансе. Итак, у нас будет что-то запущенное в этом новом окне, давайте запустим команду dmesg с параметром -w (follow):

dmesg -w

Теперь у нас есть два окна в сеансе, одно работает поверх, а другое dmesg. Однако мы можем видеть только по одному (подробнее об этом чуть позже).

Взгляните на левую часть строки состояния. Мы все еще находимся на tmux-сеансе «geek-1». В нулевом окне работает top, а в первом окне — dmesg. Звездочка (*) после dmesg сообщает нам, какое окно видно.

Чтобы переключаться между окнами, нажмите Ctrl + B, а затем одну из следующих клавиш:

  • N: Показать следующее окно.
  • P: Показать предыдущее окно.
  • От 0 до 9: Показать окно с номерами от 0 до 9.

Вы можете также выберите окно из списка. Если вы нажмете Ctrl + B, а затем W, появится список окон.

Чтобы переместить желтую полосу выделения, нажмите стрелки вверх или вниз, Home или End. В нижней части дисплея отображается предварительный просмотр содержимого в выделенном окне.

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

Отсоединение и присоединение сеансов

Если вы нажмете Ctrl + B, а затем D, вы отключите сеанс. Он будет продолжать работать в фоновом режиме, но вы не сможете его видеть или взаимодействовать с ним.

Мы начали работу в верхней части сеанса, поэтому у нас есть работающий процесс для демонстрации. Затем мы нажимаем Ctrl + B, а затем D. Сессия исчезает и становится фоновой.

Мы возвращаемся в исходное окно терминала. Есть сообщение от tmux о том, что сеанс отключен. Это также напоминает нам о названии, которое мы дали сеансу. Это удобно, потому что это то, что мы используем для присоединения к фоновому сеансу, а затем восстанавливаем его до интерактивного.

Чтобы присоединить отключенный сеанс, мы будем использовать самоочевидную команду attach-session с -t (целевая сессия) опция. Мы также предоставим имя сеанса, который хотим вспомнить.

Мы вводим следующее:

tmux attach-session -t geek-1

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

Любые длительные или непрерывные процессы, которые вы запустили перед отключением сеанса, по-прежнему будут работать в фоновом режиме (если они не завершены), когда вы присоедините сеанс .

screen может это сделать, но не так интуитивно.

Обработка нескольких сеансов

Давайте откроем другое окно терминала и запустим новый сеанс tmux под названием «geek-2»:

tmux new -s geek-2

В этом сеансе мы запустим dmesg:

dmesg -w

Теперь у нас есть наш исходный сеанс tmux «geek-1», и новый, названный «компьютерщик-2».

В строке состояния показано, что этот сеанс называется «компьютерщик-2», и в нем есть одно окно, запущен dmesg.

Если мы нажмем Ctrl + B, а затем D, мы отключим этот сеанс.

Detached tmux session geek-2 in a terminal widnow.

Вернемся к сеансу tmux «geek-1» , мы нажимаем Ctrl + B, а затем S, чтобы увидеть список сеансов tmux.

Для ясности, это список сеансов. Подобный экран, который мы видели ранее, представлял собой список окон в одном сеансе.

Вы можете переместить желтую полосу выделения, нажимая стрелки вверх и вниз, Home и End. В нижней части отображается предварительный просмотр содержимого выделенного сеанса.

Если вы нажмете стрелку вправо, отобразятся окна для выделенного сеанса.

Нажмите Enter, чтобы перейти к выделенному сеансу или окну, или Esc, чтобы выйти из списка сеансов без изменения сеансов. Если вы выбираете новый сеанс, текущий отключается, а выбранный вами присоединяется.

Мы отключили сеанс «компьютерщик-2» до того, как это сделали. Однако вы можете сделать это с сеансами, которые все еще привязаны к своим исходным окнам терминала. Когда вы это сделаете, любые изменения экрана будут отображаться одновременно в обоих сеансах tmux.

Команда screen также может сделать это с помощью аналогичного набора команд.

Работа с оконными панелями

Если вы нажмете Ctrl + B, а затем двойные кавычки («»), вы разделяете окно по горизонтали на две панели.

Это влияет только на текущее окно, остальные в сеансе не изменятся. Мы использовали команду tmux ls на верхней панели, чтобы вывести список окон в этом сеансе. Их два, и строка состояния сообщает нам, что мы находимся в первом окне. Если мы перейдем к нулевому окну, нажав Ctrl + B, а затем 0 (ноль), мы увидим, что оно остается таким, каким мы его оставили.

Это две независимые командные строки, а не два представления в одном окне, это отдельные и отдельные оболочки. Мы можем показать это, запустив разные команды на каждой панели.

Мы вводим следующее:

uname -a

ls -hl

Чтобы переместить переходя с одной панели на другую, нажмите Ctrl + B, а затем стрелку вверх, вниз, влево или вправо.

Two different commands in two panes in a tmux session in a terminal widow.

Если вы нажмете Ctrl + B, а затем знак процента (%), он разделяет текущую панель по вертикали.

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

Эти числа используются в подсказках и сообщениях от tmux. Нажмите Ctrl + B, а затем X, чтобы закрыть текущую панель. Строка состояния изменится на желтый, и вам будет предложено подтвердить, что вы хотите закрыть эту панель с номером. Нажмите Y, чтобы удалить панель, или N, чтобы оставить все как есть.

Если вы нажмете Y, панель будет удалена.

У экранной команды также есть панели, но, опять же, они менее интуитивно понятны в использовании. Что нас раздражает в отношении экрана, так это то, что если вы отключаете сеанс с панелями, они исчезают, когда вы повторно подключаете этот сеанс. Это очень быстро устаревает.

Шпаргалка по Ctrl + B

Ниже мы включили шпаргалку с различными командами, которые можно использовать в tmux.

Команды сеанса

  • S: List сеансы.
  • $: переименовать текущий сеанс.
  • D: отсоединить текущий сеанс.
  • Ctrl + B, а затем?: отобразить страницу справки в tmux.

Команды окна

  • C: Создать новое окно.
  • ,: переименовать текущее окно.
  • W: Список окон.
  • N: переход к следующему окну.
  • P: переход к предыдущему окну.
  • от 0 до 9: переход к указанному номеру окна.

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

  • %: создать горизонтальное разделение.
  • “: создать вертикальное разделение.
  • H или стрелка влево: перейти к панель слева.
  • I или стрелка вправо: переход к панели справа.
  • J или стрелка вниз: переход к панели ниже.
  • K или стрелка вверх: переход к панели выше.
  • Q: Кратковременное отображение номеров панелей.
  • O: перемещаться по панелям по порядку. При каждом нажатии вы переходите к следующему, пока не пройдете через все из них.
  • }: поменяйте местами текущую панель со следующей.
  • {: поменяйте местами позицию текущая панель с предыдущей.
  • X: закрыть текущую панель.

Как они сравниваются

С точки зрения функциональности screen и tmux работают одинаково и предлагают одни и те же основные функции. Способ доступа к этим функциям заметно отличается. tmux предлагает более удобные и удобные способы доступа к различным функциям. Однако это не единственное различие.

Возможность переименовывать сеансы и окна в tmux удобна, и тот факт, что он сохраняет панели при повторном подключении сеанса, меняет правила игры. Экран

, с другой стороны, полностью теряет панели при отсоединении и повторном подключении сеанса. Это достаточно раздражает, чтобы вы вообще избегали отсоединения.

В tmux есть гораздо больше, включая его невероятно гибкие возможности создания сценариев. Вы должны сами проверить это.

Как использовать tmux в Linux (и почему он лучше экрана)


Напишите пару строк: