Шпаргалка по tmux
Tmux — это терминальный мультиплексор или иными словами, вы можете в одном терминале запустить несколько терминальных сессий и переключаться между ними или даже разместить их в одном окне, а также отключиться от сессии оставив её работать в фоне, а затем вернуться и посмотреть результат, это может быть очень удобно при работе по SSH. Если вы раньше пользовались утилитой screen, то tmux — это её аналог, который имеет намного больше функций.
Эта статья — небольшая шпаргалка по Tmux, в которой мы разберем установку программы, основные её возможности и команды, а также некоторые приемы использования. После прочтения статьи вы сможете полноценно пользоваться утилитой.
Установка Tmux
Здесь все просто. Для установки программы в Ubuntu выполните следующую команду:
sudo apt install tmux
А для установки в CentOS:
sudo yum install tmux
Синтаксис и опции команды Tmux
Синтаксис команды предельно простой, для создания новой сессии достаточно запустить утилиту без параметров. Для подключения к уже существующей придется использовать дополнительные опции. Вот основной синтаксис:
tmux команда опции
Что касается опций, то в большинстве вам придется использовать только две — это -t (target) — которая указывает цель, к которой будет применяться команда, например, идентификатор сессии или подключенного клиента, а также -s (session) — который обычно используется для обозначения источника, над которым будет выполняться действие.
Команды tmux для управления сессиями, которые вы можете использовать:
- attach-session (attach) — подключиться к уже существующей сессии. В параметре необходимо передать опцию -t и идентификатор сессии;
- detach-session (detach) — отключить всех клиентов (или переданного с помощью опции -t) от сессии, переданной в опции -s;
- has-session — проверить существует ли сессия, аналогично, надо передать идентификатор сессии;
- kill-server — остановить все запущенные сессии;
- kill-session — завершить сессию переданную в параметре -t;
- list-clients — посмотреть клиентов, подключенных к сессии -t;
- list-sessions (ls) — вывести список всех запущенных сессий;
- new-session — создать новую сессию, можно передать имя сессии в опции -s и стартовую директорию в опции -c;
- rename-session — переименовать сессию, нужно передать идентификатор сессии и новое имя;
Конечно, у tmux намного больше команд, но мы не будем рассматривать их в этой статье. В основном, команды будут использоваться для подключения и отключения от сессий, все остальные действия выполняются с помощью горячих клавиш и их тут тоже достаточно.
По умолчанию для активации сочетания клавиш нужно нажать Ctrl+B, отпустить, а потом нажать нужную клавишу. Вот основные сочетания клавиш tmux, которые вам понадобятся:
- Ctrl+b c — создать новое окно;
- Ctrl+b w — выбрать окно из списка;
- Ctrl+b 0-9 — открыть окно по его номеру;
- Ctrl+b , — переименовать текущее окно;
- Ctrl+b % — разделить текущую панель по горизонтали;
- Ctrl+b « — разделить текущую панель по вертикали;
- Ctrl+b стрелка — перейти на панель, находящуюся в стороне, куда указывает стрелка;
- Ctrl+b Ctrl+стрелка — изменить размер текущей панели;
- Ctrl+b o — перейти на следующую панель;
- Ctrl+b ; — переключаться между текущей и предыдущей панелью;
- Ctrl+b x — закрыть текущую панель;
- Ctrl+b [ — войти в режим копирования (подробнее ниже);
- Ctrl+b ] — вставить из внутреннего буфера обмена tmux;
- Ctrl+b d — отключится от текущей сессии;
- Ctrl+b : — открыть командную строку.
Для начала работы этих горячих клавиш будет достаточно. Шпаргалка tmux завершена, теперь перейдем к примерам работы с программой.
Как пользоваться tmux
1. Создание сессии
Чтобы создать новую сессию достаточно выполнить команду без параметров:
Также можно создать сессию командой new-session и задать ей удобное имя:
tmux new-session -s losst
2. Разделение окна на панели
Окно сессии можно разделить на несколько панелей. Чтобы выполнить разделение по горизонтали нажмите Ctrl+b отпустите, а затем нажмите Shift+»:
Аналогично можно разделить панель по вертикали, нажав Ctrl+b, а затем Shift+%:
Размер активной панели можно менять нажав Ctrl+b, а потом Ctrl и стрелка:
А для переключения между панелями используйте клавиши Ctrl+b и стрелка. Сначала не привычно, но потом удобно.
3. Поддержка мышки
По умолчанию поддержка мышки отключена, но если вы работаете в графическом окружении, вы можете её включить. Это даст несколько преимуществ: вы сможете выбирать активную панель мышкой, копировать текст во внутренний буфер обмена, менять размер панелей, использовать прокрутку для просмотра истории вывода и так далее. Для этого откройте файл ~/.tmux.conf и добавьте туда следующие строки:
set-option -g -q mouse on
bind-key -T root WheelUpPane if-shell -F -t = «#» «send-keys -M» «select-pane -t =; copy-mode -e; send-keys -M»
bind-key -T root WheelDownPane if-shell -F -t = «#» «send-keys -M» «select-pane -t =; send-keys -M»
Сохраните изменения, нажмите Ctrl+b :, а потом выполните такую команду чтобы перезагрузить tmux:
Настройка tmux завершена, теперь мышь будет работать.
4. Копирование и вставка
Одна из достаточно важных операций при работе с терминалом — это возможность что-то скопировать и куда-то перенести. После активации поддержки мышки вы можете просто выделить участок текста мышкой и он автоматически скопируется во внутренний буфер tmux.
Если вы хотите иметь возможность скопировать в системный буфер обмена, перед тем как выполнять действия мышкой зажмите Shift:
Кроме того, в tmux есть управление копированием и вставкой с помощью клавиш. Для перехода в режим копирования нажмите Ctrl+B [, затем переместите курсор к нужному месту с помощью стрелок. Кстати, этот режим можно использовать также для прокрутки. Потом нажмите Ctrl+пробел для начала выделения, выделите нужный фрагмент стрелками и нажмите Ctrl+w для копирования.
Чтобы вставить текст из внутреннего буфера обмена нужно нажать сочетание клавиш Ctrl+b ]. Для выхода из режима копирования используйте q или Esc.
5. Окна tmux
Кроме панелей в tmux можно открывать окна. Это аналог рабочих столов в Linux. Каждое окно привязано к определенной цифровой кнопке и имеет свой набор панелей. Для создания нового окна нажмите Ctrl+b c:
Список окон выводится внизу окна терминала. Для переключения на нужное окно нажмите Ctrl+b и номер окна.
6. Отключение от сессии
Чтобы отключиться от текущей сессии достаточно нажать сочетание клавиш Ctrl+b d.
После отключения все запущенные в сессии программы продолжат работать и вы всегда сможете снова подключиться и посмотреть их вывод. Это удобно при подключении по SSH, которое всегда может разорваться.
7. Подключение к сессии
Посмотреть список сессий можно командой ls:
А для подключения используйте attach:
tmux attach -t losst
Ещё можно посмотреть список клиентов, подключенных к сессии:
Выводы
В этой статье мы разобрали основные команды tmux, а также как пользоваться этой утилитой. Я для себя открыл tmux не давно. Слышал о программе довольно давно, но никак не доходили руки попробовать, а потом попробовал и уже не могу без неё обойтись.
Краткая шпаргалка по tmux (менеджеру терминалов)
tmux — это менеджер терминалов, к которому удобно подключаться и отключаться, не теряя при этом процессы и историю. Как screen , только лучше (в первую очередь потому, что использует модель клиент—сервер).
Вашему вниманию предлагается минималистическая шпаргалка, позволяющая быстро начать использовать tmux , а уж тонкую настройку, продвинутые команды и бесконечные хот-кеи желающие найдут, набрав man tmux .
Очень хороший способ запустить tmux:
tmux attach || tmux new — делая так, вы сперва пытаетесь подключиться к уже существующему серверу tmux, если он существует; если такого ещё нет — создаёте новый.
После этого вы попадаете в полноценную консоль.
Ctrl+b d — отключиться. (Точно так же вы отключитесь, если прервётся соединение. Как подключиться обратно и продолжить работу — см. выше.)
В одной сессии может быть сколько угодно окошек:
Ctrl+b c — создать окошко;
Ctrl+b 0. 9 — перейти в такое-то окошко;
Ctrl+b p — перейти в предыдущее окошко;
Ctrl+b n — перейти в следующее окошко;
Ctrl+b l — перейти в предыдущее активное окошко (из которого вы переключились в текущее);
Ctrl+b & — закрыть окошко (а можно просто набрать exit в терминале).
В одном окошке может быть много панелей:
Ctrl+b % — разделить текущую панель на две, по вертикали;
Ctrl+b « — разделить текущую панель на две, по горизонтали (это кавычка, которая около Enter, а не Shift+2);
Ctrl+b →←↑↓ — переходить между панелями;
Ctrl+b x — закрыть панель (а можно просто набрать exit в терминале).
Недостаток — непривычным становится скроллинг:
Ctrl+b PgUp — вход в «режим копирования», после чего:
PgUp, PgDown — скроллинг;
q — выход из «режима копирования».
Обзор терминальных мультиплексоров: Tmux и Dvtm
Терминал принадлежит к числу наиболее часто используемых инструментов администратора. Нередко во время работы приходится одновременно держать открытыми несколько вкладок терминала: одну — для управления веб-сервером, другую — для управления базой данных, третью — для копирования файлов и т.п. Когда открытых вкладок очень много, отслеживать одновременно все процессы становится трудно, и это существенно усложняет работу. Существуют специальные программы, c помощью которых можно решить проблему множественных терминалов. Они называются терминальными мультиплексорами.
Терминал принадлежит к числу наиболее часто используемых инструментов администратора. Нередко во время работы приходится одновременно держать открытыми несколько вкладок терминала: одну — для управления веб-сервером, другую — для управления базой данных, третью — для копирования файлов и т.п. Когда открытых вкладок очень много, отслеживать одновременно все процессы становится трудно, и это существенно усложняет работу. Существуют специальные программы, c помощью которых можно решить проблему множественных терминалов. Они называются терминальными мультиплексорами.
Терминальные мультиплексоры позволяют одновременно работать с несколькими терминальными сессиями в одном окне. Принцип их работы заключается в следующем: терминал с множественными вкладками создается на удаленной машине; на локальной машине окно терминала делится на несколько частей, и в каждой из них могут быть запущены любые приложения и процессы. От удаленной машины можно отключиться (текущая сессия будет сохранена), а затем снова подключиться к ней и продолжать работу.
Самым известным и распространенным терминальным мультиплексором является, конечно же, GNU Screen. При всех своих преимуществах он отличается некоторым неудобством в работе. Неудачно реализована, например, операция разделения экрана на части: при отключении от текущей сессии и последующем ее возобновлении порядок расположения частей не сохраняется.
В последнее время широкое распространение получили и другие терминальные мультиплексоры, более наглядные и удобные в работе — например, tmux и dvtm, которым и посвящена эта статья.
Tmux
Tmux работает под Linux и под MacOS; он включен в официальные репозитории большинства современных Linux-систем и может быть установлен при помощи стандартного менеджера пакетов.
Запустим tmux при помощи следующей команды:
$ tmux
В нижней части экрана появится строка состояния:
Управление всеми терминальными мультиплексорами осуществляется так: сначала нажимается так называемая префиксная комбинация клавиш, а после нее — клавиша, управляющая той или иной функцией. В tmux по умолчанию в качестве префиксной установлена комбинация Ctrl+B. Чтобы разделить экран терминала на две половины вертикальной чертой, нужно сначала нажать Ctrl+B, а затем — % (т.е. Shift+5):
Каждую из получившихся вкладок можно также разделить на две части горизонтальной чертой при помощи комбинации клавиш Ctrl+B ” (сначала нажимаем Ctrl+B, а затем — “).
Разделить окно на две части можно также при помощи команд:
$ tmux split-window -h
(разделить на две части горизонтально)
$ tmux split-window -v
(разделить на две части вертикально)
Чтобы перейти из одной части окна в другую, нажимаем сначала Ctrl+B, а затем — клавиши ←, ↑, → и ↓.
Чтобы создать новое окно, нажмем комбинацию клавиш Ctrl+B+C. В рамках одной сессии может быть задействовано неограниченное количество окон; каждое из них может быть в свою очередь разделено на части. Переключение между окнами осуществляется при помощи следующих комбинаций:
- Ctrl+B+ 0…9 — перейти в указанное окно;
- Ctrl+B P — перейти в предыдущее окно;
- Ctrl+B N — перейти в следующее окно;
- Ctrl+B L — перейти в предыдущее активное окно (т.е. в то, из которого ранее был осуществлен переход в текущее окно);
- Ctrl+B X — закрыть окно (это можно также сделать при помощи команды exit).
Текущую сессию tmux можно прервать, нажав комбинацию клавиш Ctrl+B+D. Чтобы возобновить прерванную сессию, нужно ввести команду:
$ tmux attach
Прерванная сессия будет восстановлена; при этом все данные и процессы будут сохранены.
Эту команду можно ввести и в сокращенном виде:
$ tmux -a
Чтобы вывести на экран список сессий, нужно выполнить следующую команду:
$ tmux ls
Завершение открытой сессии осуществляется при помощи команды:
$ tmux kill-session -t [имя сессии]
Чтобы завершить все открытые сессии одновременно, нужно ввести команду:
$ tmux kill-server
Рекомендации по настройке
Отображение строки состояния в нижней части экрана можно отключить. Для этого введем следующую команду:
$ tmux set -g status off
А чтобы отключенная строка состояния отображалась снова — команду:
$ tmux set -g status on
Можно изменить положение строки состояния и сделать так, чтобы она находилась не в нижней, а в верхней части экрана:
$ set -g status-position top
Цвет строки состояния изменяется при помощи следующей команды:
tmux set -g status-bg blue
Dvtm
Dvtm (dynamic virtual terminal manager) представляет собой терминальный мультиплексор, по функциональности во многом близкий к tmux.
Он также включен в официальные репозитории большинства современных Linux-систем и устанавливается при помощи стандартного менеджера пакетов.
После запуска dvtm в верхней части экрана будет отображена строка состояния:
Управление dvtm организовано по тому же принципу, что и управление tmux. В качестве префиксной используется комбинация клавиш Ctrl+G. Понятие окна в dvtm интерпретируется совершенно иначе по сравнению с tmux. Для создания нового окна используется комбинация клавиш Ctrl+G C. При нажатии этой комбинации экран будет разделен на две части; при этом каждая из них является отдельным окном:
При помощи той же самой комбинации клавиш можно создавать дополнительные окна:
Порядок расположения окон можно изменять. Выделяются следующие варианты расположения:
- вертикальное (Ctrl+G T) — текущее окно расположено в левой половине экрана; все остальные окна расположены в правой половине;
- горизонтальное (Ctrl+G B) — основное рабочее окно занимает верхнюю половину экрана, все остальные окна располагаются внизу;
- режим сетки (Ctrl+G G) — экран делится на части одинакового размера по количество созданных окон;
- полноэкранный режим (Ctrl+G M) — текущее окно занимает весь экран.
Переходить от одного режима расположения окон к другому можно, нажимая омбинацию Ctrl+G+пробел.
Для управления окнами используются следующие клавиатурные комбинации:
- Ctrl+G X — закрыть текущее окно;
- Ctrl+G J — перейти в следующее окно;
- Ctrl+G K — перейти в предыдущее окно;
- Ctrl+G 0…9 — перейти в указанное окно (цифры обозначают номер окна);
- Ctrl+G L — увеличить ширину текущего окна;
- Ctrl+G H — уменьшить ширину текущего окна;
- Ctrl+G Q — закрыть все окна и выйти из dvtm.
В dvtm имеется одна интересная функция, которой больше нет ни в одном из известных нам терминальных мультиплексоров: нажатие клавиш в текущем окне могут автоматически воспроизводиться во всех остальных открытых окнах. Нажмем комбинацию клавиш Ctrl+G+A. Если после этого нажать на какую-нибудь клавишу, нажатие сработает во всех окнах сразу.(UPD. Наши читатели сообщают, что аналогичная функция имеется и в tmux: tmux set synchronize-panes on).
Если ввести в текущем окне какую-либо команду, она также будет одновременно выполнена во всех открытых окнах. С помощью этой функции можно, например, осуществлять одновременную настройку нескольких удаленных серверов по одинаковой схеме.
В отличие от tmux, dvtm не поддерживает сохранения и возобновления сессий. Для этого используется dtach — вспомогательная утилита, которая обеспечивает возможность отключения от текущей сессии и последующего подключения к ней для любых консольных приложений. Устанавливается при помощи стандартного менеджера пакетов.
Чтобы получить возможность отключать сессии и снова подключаться к ним, нужно запустить dvtm под dtach:
$ dtach -c /tmp/dvtm-session -r winch dvtm
При работе с dtach нужно явно указывать сокет, с помощью которого идентифицируется сессия. Доступ к сессии целиком и полностью определяется доступом к сокету.
Чтобы покинуть dtach, нужно нажать комбинацию Ctrl+\. Подключение к существующей сессии осуществляется при помощи команды:
$ dtach -a /tmp/dvtm-session -r winch
Более подробная информация о dtach представлена на официальной man-странице .
В заключение приведем небольшую шпаргалку — таблицу основных команд и клавиатурных комбинаций, используемых в screen, tmux и dvtm.
Сравнительная таблица команд и клавиатурных комбинаций
Управление сессиями
Операция | screen | tmux | dvtm |
---|---|---|---|
Запустить новую сессию | screen | tmux tmux new-session tmux new-session -s [имя сессии] |
Возможность сохранения и возобновления сессий не поддерживается — для этого нужно устанавливать утилиту dtach, реализующую такую возможность для всех консольных приложений. Запуск dvtm под dtach осуществляется при помощи команды: dtach -c /tmp/dvtm-session -r winch dvtm |
Подключиться к уже созданной сессии | screen -r | tmux attach tmux attach-session -s [имя сессии] tmux -a |
dtach -a /tmp/dvtm-session -r winch |
Отсоединиться от текущей сессии | Ctrl+A D | tmux detach ИЛИ Ctrl+B D | Ctrl+\ |
Просмотреть список активных сессий | screen -ls | tmux ls | ps aux | grep dtach |
Удалить сессию | screen -r [имя сессии] -X quit | tmux kill-session -t [имя сессии] | — |
Удалить все сессии | Ctrl+A \ | tmux kill-server | — |
Управление окнами
Операция | screen | tmux | dvtm |
---|---|---|---|
Cоздать новое окно | Ctrl+A C | Ctrl+B C | Ctrl+G C |
Перейти в указанное окно | — | Ctrl+B 0….9 | Ctrl+G 0….9 |
Перейти в предыдущее окно | Ctrl+A P | Ctrl+B P | Ctrl+G J |
Перейти в следующее окно | Ctrl+A N | Ctrl+B N | Ctrl+G K |
Перейти в последнее активное окно | Ctrl+A L | Ctrl+B L | — |
Показать список всех открытых окон | Ctrl+A « | — | — |
Увеличить ширину окна | — | Ctrl+B+Ctrl N→ или Ctrl+B Alt → (увеличивает с большим шагом) | Ctrl+G L |
Уменьшить ширину окна | — | Ctrl+B Ctrl+← | Ctrl+G H |
Воспроизводить нажатия клавиш во всех открытых окнах | — | tmux set synchronize-panes on | Ctrl+G A |
Закрыть текущее окно | Ctrl+A X | Ctrl+B X | Ctrl+G X |
Что такое tmux в Linux и как установить
Tmux (Terminal Multiplexer) — утилита командной строки для управления несколькими терминалами в рамках одного окна. Он позволяет пользователям запустить несколько программ в одном терминале, разделять окно терминала на несколько панелей и группировать несколько панелей в одном окне. Более того, tmux позволяет пользователю сохранять сессии работы с терминалом и возобновлять их в любое время. Tmux очень полезен для управления удаленными серверами и для создания более эффективных многозадачных сред в ОС Linux.
Как устанавливается
Для установки Tmux на большинстве дистрибутивов используется стандартный менеджер пакетов системы. Например, для установки Tmux на Ubuntu/Debian можно использовать следующую команду в терминале:
Для установки на CentOS/RHEL/Fedora можно использовать команду:
После установки, можно запустить Tmux командой tmux в терминале.
Если нужна более актуальная версия Tmux, можно собрать и установить ее самостоятельно из исходного кода. Для этого нужно сначала установить необходимые зависимости (как минимум, пакеты с заголовочными файлами) и затем скомпилировать и установить пакет. Команда для скачивания исходного кода Tmux:
Затем нужно распаковать архив и перейти в директорию с исходным кодом Tmux:
Далее, следуйте инструкциям в файле README для компиляции и установки Tmux. Обычно это:
После установки, можно запустить Tmux командой tmux в терминале.