Главная

Friday, 10 March 2023

Терминальный мультиплексор tmux.

Всем привет.

В мире Linux bash процессы, которые вы запускаете из командной строки, привязаны к вашему активному пользовательскому сеансу. Для удобства понимания вы можете думать о каждой команде, которую вы вводите, как о небольшом приложении с собственным значком на панели задач Windows. Если ваш сеанс bash завершается по какой ­либо причине, ваши процессы прекращаются.

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

Мне нравится tmux и использую его по двум основным причинам:

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

Как вы, вероятно, знаете, для обработки некоторых команд требуется много времени. У кого есть лишнее время ждать? Вместо этого вы можете запустить свою «долгоиграющую» команду в одном окне терминала, а затем открыть другое окно, чтобы заняться другими делами. Вы можете считать это аналогом нескольких вкладок в одном окне браузера, но, вероятно, будет лучше, если я покажу вам пример терминала. Откройте терминал в вашей виртуальной машине Ubuntu и введите tmux:


Пусть вас не смущает строка состояния на этом снимке экрана. Самая важная вещь, на которую следует обратить внимание, – это лента внизу слева со словом bash (или zsh) и числом 0. В языке tmux это называется окном, и все окна имеют числовой идентификатор, начинающийся с 0, и заголовок текущего запущенного процесса, которым по умолчанию является bash. Переименовать это окно легко, если вы знаете команды tmux.

Переименование окна tmux.

Начнем с того, что я не рекомендую вам без необходимости менять название окна. Это связано с тем, что в большинстве справочных материалов, которые вы найдете в интернете, используется значение по умолчанию, и расхождение имен может сбить вас с толку. Команда для переименования окна – Ctrl+b, за которой следует запятая (нажмите и отпустите комбинацию клавиш Ctrl+b, а затем введите запятую). Строка состояния tmux изменится, и у вас появится курсор с текстом подсказки (rename-window) bash. Используйте клавишу Delete, чтобы удалить слово bash, а затем введите новое имя вашего окна. Рекомендуется переименовать каждое окно так, чтобы название сообщало вам о том, что вы делаете в этом окне, и вы могли понять это позже, когда вернетесь к сеансу tmux с несколькими открытыми окнами. Теперь создайте новое окно, нажав Ctrl+b, а затем c. Переименуйте это окно.

Использование команд tmux.

Каждой команде tmux предшествует префиксный ключ, за которым следует фактическая команда. По умолчанию префиксный ключ – это сочетание клавиш Ctrl+b.

Для переключения между окнами используйте комбинации клавиш Ctrl+b l (Ctrl+b, за которыми следует строчная L) и Ctrl+b n. Буквы l и n означают last (последний) и next (следующий). Если у вас открыто много окон и вы хотите перейти сразу к нужному, то можете ввести Ctrl+b, а затем номер окна – например, Ctrl+b 3, чтобы перейти прямо к окну 3. В таблице ниже перечислены несколько основных полезных команд , которые вы будете часто использовать:


Сохранение сеанса tmux.

Теперь предположим, что вам нужно покинуть сеанс. Вместо того чтобы нажимать кнопку закрытия на терминале, вы можете использовать коман ду tmux detach, которая вызывается комбинацией клавиш Ctrl+b d. Вы должны получить следующий результат:

[detached (from session0)]

Вы также вернетесь в обычную командную строку bash. Теперь вы можете закрыть терминал. После возвращения вы можете открыть новый терминал и ввести tmux ls. Эта коман да отобразит что-­то наподобие показанного ниже вывода, означающего, что у сеанса есть два активных окна и один сеанс tmux с идентификатором 0, а также указаны дата/время его создания:

0: 2 windows (created Thu Feb 18 11:03:27 2023) [105x12]

Этот вывод даже сообщает вам массив символов или размер сеанса, который в моем случае составляет 105×22. В качестве примера я могу подключиться к этому сеансу tmux, набрав tmux a -t 0, где a означает attach (прикрепить), -t означает целевой сеанс, а 0 – идентификатор сеанса. Если коман да tmux ls отображает несколько сеансов, вы можете заменить 0 в предыдущей коман де числовым идентификатором конкретного сеанса tmux, к которому вы хотите подключиться.

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


Удачи.

No comments:

Post a Comment

А что вы думаете по этому поводу?