Поиск по сайту:

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


Описание: Установите tmux из репозитория дистрибутива Linux, затем запустите «tmux» в терминале Linux. Вы можете дать каждому сеансу tmux уникальное имя, создать окна в каждом сеансе и поместить эти окна в панели.

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

tmux против экрана

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

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

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

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

Команда screen также является мультиплексором терминала и содержит множество параметров. Чтобы узнать обо всем, что вы можете с ним сделать, ознакомьтесь с нашей подробной статьей.

На этот раз мы сосредоточимся на tmux. По мере продвижения мы будем упоминать, как 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, его номер окна и имя запущенной в нем программы добавляются в строку состояния.

Команда screen по умолчанию не отображает строку состояния. Вы должны летать вслепую и полагаться на свой ум, чтобы понять, что происходит, что требует некоторой практики. (Если вы не настроите свою собственную строку состояния.)

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

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

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

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

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

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

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

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

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

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

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

tmux new -s geek-1

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

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

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

dmesg -w

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

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

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

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

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

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

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

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

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

Мы запустили top в сеансе, поэтому у нас есть работающий процесс для демонстрации. Затем мы нажимаем 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 и новый, который называется geek-2.

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

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

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

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

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

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

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

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

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

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

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

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

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

Набираем следующее:

имя-a

ls -hl

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

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

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

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

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

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

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

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

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

  • S: Список сеансов.
  • $: переименовать текущий сеанс.
  • D: отключить текущий сеанс.
  • Ctrl+B, а затем ?: Отобразить страницу справки в tmux.

Оконные команды

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

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

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

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

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

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

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

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

RELATED: Best Linux Laptops for Developers and Enthusiasts