Шпаргалка по работе с Tmux (терминальный мультиплексор)


    На Хабрахабре Tmux (ти-макс) упоминался неоднократно, тем не менее, решил написать еще одну шпаргалку, т.к. в других некоторые важные моменты не показаны.

    Tmux (терминальный мультиплексор) позволяет работать с несколькими сессиями в 1 окне. Вместо нескольких окон терминала к серверу — вы можете использовать одно. Позволяет подключаться/отключаться к текущему состоянию сессии. Запущенные программы и процессы продолжают работать. (Можно использовать вместо nohup, dtach).

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

    1. Установка


    CentOS (нужен подключенный репо EPEL)
    # yum install tmux 
    
    Fedora
    # dnf install tmux
    
    Ubuntu/Debian
    # apt-get install tmux

    2. Конфигурационные файлы


    (пользователя, системный):

    ~/.tmux.conf
    /etc/tmux.conf

    С версии 2.1 для включения режима мыши (скролл, изменение размера панели, выбор панели и др.) нужно добавить в tmux.conf:

    set -g mouse on

    До версии 2.1

    set -g mouse-resize-pane on
    set -g mouse-select-pane on
    set -g mouse-select-window on
    set -g mode-mouse on

    3. Работа с Tmux


    Старт
    # tmux //без параметров будет создана сессия 0
    # tmux new -s session1 //новая сессия session1. Название отображается снизу-слева в квадратных скобках в статус строке. Далее идет перечисление окон. Текущее окно помечается звездочкой.

    Префикс (с него начинаются команды)
    <C-b> (CTRL + b)

    Новое окно (нажать CTRL+b, затем нажать с)
    <C-b c>

    Список окон
    <C-b w> // переключиться курсором вверх-вниз

    Переключение
    <C-b n> // следующее окно
    <C-b p> // предыдущее окно
    <C-b 0> // переключиться на номер окна

    Окна можно делить на панели (Panes)
    Как в тайловых (мозаичных) оконных менеджерах.

    Деление окна горизонтально
    <C-b ">
    либо команда
    # tmux split-window -h

    Деление окна вертикально
    <C-b %>
    либо команда
    # tmux split-window -v

    Переход между панелей
    <C-b стрелки курсора> // либо режим мыши

    Изменение размеров панелей
    <C-b c-стрелки> // либо режим мыши

    Закрытие окон
    <C-b x> // нужно подтвердить y
    либо
    # exit

    Отключение от сессии
    <C-b d>
    либо
    # tmux detach

    Список сессий
    # tmux ls

    Подключиться к работающей сессии
    # tmux attach //подключение к сессии, либо к единственной, либо последней созданной
    # tmux attach -t session1 // подключение к сессии session1

    Выбрать сессию
    <C-b s>

    Завершение сессии
    # tmux kill-session -t session1

    Завершить все сессии
    # tmux kill-server

    Список поддерживаемых комманд
    # tmux list-commands

    Дополнительная информация
    # man tmux

    Официальный сайт
    Другой известный мультиплексор Screen

    Буду рад любым дополнениям и замечаниям.
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 20

      –5
      Зачем это на хабре?
        –3
        Чем эта статья лучше этой?
          +1

          Шпаргалка не полна без описания настройки мыши и прокрутки панелей.

            0
            Благодарю за критику. Добавил режим мыши.
            0
            Не удержался написать этот комментарий.

            TL;DR Уважаемый, но из того что вы написали я не нашел ничего из того что не написано в `man tmux`. Будьте так любезны указать на значимость вашей подачи.




            краткость — сестра таланта

            ЗЫ см тлдр

              0
              man tmux | wc -l
              2284
              0

              А что так можно было сделать?


              А где самое интересное? Где самое важно? Где правильный подход к автоматической генерации панелей в окне? Как сразу сделать 5-6 панелей нужного размера?


              Ручками не проблема это сделать, благо замечательная шпаргалка Краткая шпаргалка по tmux есть. Но главное же автоматизация! А тут опять посылают man читать.

                +2

                Раз уж тут по tmux разговор идет, может кто знает, существует ли перевод книги The Tao of tmux на Русский.
                P.S. Пожалуйста не нужно мне говорить о том, что бы я читал в оригинале.

                0
                , А что, кто-то знает, как мышь по-нормальному и скроллинг настроить. То есть чтобы в пути при тмукс-сессии при прокрутке колеса была прокрутка экрана вверх (не курсора tmux), а при нажатии кнопки было стандартное поведение копировать-вставить
                  +1
                  Если использовать macOS то интеграция с iTerm2 (tmux -CC) позволяет использовать стандартное поведение при скролле.
                    0
                    В putty как такое сделать?
                      +1
                      Про putty на уверен, но в терминале Ubuntu работает выделение/вставка с зажатым Shift.
                      Попробуйте.
                    0
                    По первому — опцию set -g mouse on пробовали?
                    По второму — можно подробнее?
                      0
                      Конечно пробовал, весь гугл и стековерфлоу завален этим советом. Тошько после этой опции я получаю прокрутку курсора внутри тмукс, а не нормальный скрол, как в путти. С этим можно жить, хоть и не привычно, но вот после включения этой опции тмукс начинает перехватывать и остальные клавиши мыши, и стандартное поведение копировать-вставить на этих кнопках уже не работает.
                    +1
                    Перепутали:
                    ```
                    Деление окна горизонтально
                    <C-b %>
                    ```
                    А это шорткат делит окно вертикально.
                      0
                      Благодарю, исправил опечатку.
                      +1
                      По хорошему — это расписать вторую главу. Какие настройки, что меняют и т.д. Та же возможность задать свои цвета, шаблоны, сочетания клавиш, команды и т.д.
                        +1
                        Если кто-то не хочет ждать вторую главу, то вот здесь есть дельный пример конфига для tmux.

                        Вот так он выглядит
                        image

                        Также интересный конфиг вот тут на гитхабе. Из него можно пару интересных вещей к себе перенять.

                        Также всем бы рекомендовал посмотреть на tpm — менеджер пакетов, особенно на пакет по сохранение/восстановлению сессии.

                        А для всех желающих научится пользоваться «tmux + vim», есть отличный туториал на ютубе.
                        +1
                        Спасибо автору.
                        Вот именно такой «формат» описания прог на Линукс мне наиболее симпатичен.
                        Прошел по списку, попробовал, все понятно.
                          0

                          Очень часто на сервере требуется tmux, но нету рут доступа, поэтому написал скрипт на этот случай, может кому пригодится

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

                          Самое читаемое