Tmux – терминальный мультиплексор
Tmux — это консольная утилита, предоставляющая пользователю доступ к нескольким терминалам в рамках одного экрана. Простыми словами, используя эту утилиту можно в одном окне открыть несколько терминальных окон. Также возможно подключение к существующей сессии из другого рабочего места не прерывая выполнение определенных задач.
Для установки tmux утилиты в операционной системе Centos достаточно выполнить команду:
yum install tmux
После установки программы можно приступать к использованию
Вводим команду:
tmux или tmux new
Создается новая сессия, в которой будем дальше работать. Понять, что мы находимся в tmux можно по наличию зеленой строки внизу консоли, на которой размещены дата и время.
Разберемся с терменологии 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 указывает на номер сессии, если этот параметр опустить будет переименована существующая сессия
На изображении видно, что у нас есть сессия с названием 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» можно получить дополнительную информацию.
Контрольныей вопроссы:
- Что такое tmux? Какие возможности он имеет?
- Чем различаются сессии и окна?
- Будет ли работать программа в tmux, если закрыть сессию?
Задачи:
№1 Откройте tmux. Разделите окно на две панели. В одной из панели создайте скрипт. Запустите код в другом окне. Теперь вы можете видеть вывод и при этом редактировать свой код)
№2 Разделите окно на три панели. Напишите скрипт, содержащий ошибки. Сделайте вывод поткока stderr и stdout на разные панели.