Tmux – терминальный мультиплексор

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

Для установки tmux утилиты в операционной системе Centos достаточно выполнить команду:

yum install tmux

После установки программы можно приступать к использованию

Вводим команду:

tmux или tmux new

Создается новая сессия, в которой будем дальше работать. Понять, что мы находимся в tmux можно по наличию зеленой строки внизу консоли, на которой размещены дата и время.

alternate text

Разберемся с терменологии tmux

  • Панель (pane) — это область, в которой выводится содержимое терминала.
  • Окно (window) — это набор, состоящий из одной или большего количества панелей. Окно всегда занимает весь экран.
  • Сессия (session) — это набор окон.

Команды для работы с сессиями

Cочетание клавиш Действие
Ctrl+b, d Отключение от сессии
Сtrl+b, s Переключение между сессиями
Ctrl+b, w Переключение между сессиями и окнами
Ctrl+b, D Закрыть сессию
tmux a –t название сессии Поключится к сессии
tmux kill-session -t название сессии Прекратить работу сессии
tmux ls Просмотерть все работающие сессии
tmux rename-session –t Переименовать сессию
tmux switch –t Переподключится к другой сессии

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

Команды для работы с окнами

Ctrl+b c 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 закрыть текущую панель

После введения команды tmux создается окно, при создании несколльких окон для удобного распознавания нужного окна можно присвоить им имена:

tmux rename-window masinc

Также можно воспользоваться командной строкой терминала выполнив команду «Ctrl+B» «:»

И в командной строке набрать команду «remane-window masinc» (где «masinc» это новое имя)

Для переименования сессии применяется следующая команда: «tmux rename-session –t 0 masinc»

-t указывает на номер сессии, если этот параметр опустить будет переименована существующая сессия

alternate text

На изображении видно, что у нас есть сессия с названием 3, у которой есть два окна masinc и jobwindow, последнее разделено на две панели.

Также есть возможность управлять размером окон с помощью мышки. Для этого в конфигурационный файл /etc/tmux.conf следует добавить следующие строки:

set -g mouse-resize-pane on

Для применения настроек необходимо перечитать конфигурационный файл

tmux source-file /etc/tmux.conf

По сути, tmux является своего рода виртуальным терминалом, содержащимся в директории /dev/pts/{fooBar}. Для каждой панели создается директория такого же формата. Другими словами, если мы определим {fooBar} каждой панели, можно переадресовать потоки stdout и stderr с панели X раздельно — один на панель Y, другой на панель Z. Таким образом можно выводить на разные панели stderr и stdout программы, которые вы пишете, а также использовать терминал как лог операций.

Для прокрутки страницы вверх используйте комбинацию клавиш «Ctrl+B» «PgUp/PgDwn»

Также очень много удобных дополнительных функций можно добавить внеся необходимые изменения в конфигурационный файл. Воспользовавшить мануалом «man tmux» можно получить дополнительную информацию.

Контрольныей вопроссы:

  1. Что такое tmux? Какие возможности он имеет?
  2. Чем различаются сессии и окна?
  3. Будет ли работать программа в tmux, если закрыть сессию?

Задачи:

№1 Откройте tmux. Разделите окно на две панели. В одной из панели создайте скрипт. Запустите код в другом окне. Теперь вы можете видеть вывод и при этом редактировать свой код)

№2 Разделите окно на три панели. Напишите скрипт, содержащий ошибки. Сделайте вывод поткока stderr и stdout на разные панели.