IT-инфраструктура • инструкции • практикаПоиск по сайту

Серверы и системное администрирование

Найти материал

Tmux для системного администратора: сессии, панели и управление терминалом

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

При работе с серверами одного окна терминала обычно недостаточно. В одной вкладке приходится просматривать логи, в другой - запускать `htop`, в третьей - работать с Git, а в четвертой - выполнять миграции базы данных или следить за сетевым трафиком. Такая схема быстро превращается в хаос: легко закрыть не ту вкладку, потерять нужный процесс или запутаться в десятках SSH-подключений.

Ситуацию меняет tmux - консольный мультиплексор для Unix-систем. Он позволяет организовать несколько терминальных сессий внутри одного окна, разделять экран на панели и сохранять запущенные процессы даже после разрыва SSH-соединения. Практический разбор возможностей утилиты и сценариев ее применения можно найти в материале о [работе tmux для системного администратора](https://habr.com/ru/companies/selectel/articles/1074388/?utm_campaign=1074388&utm_source=habrahabr&utm_medium=rss).

Что такое tmux

Структура tmux состоит из трех уровней:

- сессия объединяет рабочее окружение;
- окна напоминают вкладки браузера;
- панели делят окно на несколько независимых терминалов.

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

Установить программу в Ubuntu или Debian можно стандартным менеджером пакетов:

```bash
sudo apt update
sudo apt install tmux
```

Проверить результат установки поможет команда:

```bash
tmux -V
```

В ответ система покажет установленную версию, например `tmux 3.6`.

Базовые tmux команды

Большинство действий внутри программы вызывается через специальный префикс. По умолчанию это `Ctrl+b`. Сначала нажимают `Ctrl+b`, отпускают клавиши, а затем вводят команду.

Основные варианты использования:

```bash
tmux
```

Создает новую безымянную сессию.

```bash
tmux new -s project
```

Запускает сессию с именем `project`.

```bash
tmux ls
```

Показывает список активных сессий.

```bash
tmux attach -t project
```

Подключает к уже существующей сессии.

Сочетание `Ctrl+b`, затем `d`, отсоединяет пользователя от сессии, не останавливая процессы. Это одна из главных причин, почему tmux для системного администратора становится незаменимым инструментом.

Завершить конкретную сессию можно так:

```bash
tmux kill-session -t project
```

А удалить все сессии, кроме текущей, позволяет команда:

```bash
tmux kill-session -a
```

Окна и панели

Новое окно создается сочетанием `Ctrl+b`, затем `c`. Перейти к следующему окну можно с помощью `Ctrl+b`, `n`, к предыдущему - `Ctrl+b`, `p`. Для перехода по номеру используется комбинация `Ctrl+b` и цифра от 0 до 9.

Чтобы рабочее окружение оставалось понятным, окна лучше переименовывать. Внутри tmux нажмите `Ctrl+b`, затем запятую и введите, например, `logs`, `git`, `monitoring` или `database`.

Панели позволяют одновременно видеть несколько терминалов в одном окне. Вертикальное разделение выполняется сочетанием `Ctrl+b`, затем `%`, горизонтальное - `Ctrl+b`, затем `"`. Переход между панелями осуществляется через `Ctrl+b` и клавиши со стрелками.

Размер области можно изменить, удерживая `Ctrl+b` и нажимая стрелки. Закрывается активная панель командой `exit` либо сочетанием `Ctrl+b`, затем `x`.

Понять, как использовать tmux в повседневной работе, проще всего на практическом примере. Например, в одном окне можно создать три панели: в первой выполнить `tail -f /var/log/syslog`, во второй запустить `htop`, а в третьей оставить командную строку для диагностики. Такое окружение будет доступно после повторного подключения к серверу.

Восстановление сессии после обрыва связи

Обычная SSH-сессия завершается вместе с запущенными внутри нее интерактивными процессами. Если команда выполнялась несколько часов, случайный обрыв сети может привести к потере результата. tmux отделяет рабочую сессию от соединения пользователя: сервер продолжает выполнять процессы, а администратор позднее подключается к ним снова.

Типичный сценарий выглядит так:

```bash
tmux new -s deploy
```

После запуска развертывания достаточно нажать `Ctrl+b`, `d`, закрыть SSH и заняться другими делами. Вернувшись на сервер, выполните:

```bash
tmux attach -t deploy
```

И увидите тот же экран с прежними процессами. Такое tmux восстановление сессии особенно полезно при сборке больших проектов, резервном копировании, миграциях баз данных и длительном мониторинге.

Для автоматического восстановления после перезагрузки сервера используют дополнительные инструменты, например `tmux-resurrect` и `tmux-continuum`. Первый сохраняет состояние окон и панелей, второй периодически создает резервные копии и может запускать восстановление автоматически.

Синхронный ввод и управление несколькими серверами

Иногда одну и ту же команду требуется выполнить сразу в нескольких терминалах. В tmux для этого предусмотрен режим синхронизации панелей. Нажмите `Ctrl+b`, затем `:`, введите:

```text
setw synchronize-panes on
```

Теперь введенный текст будет передаваться во все панели текущего окна. Это удобно при работе с несколькими серверами или сравнении одинаковых конфигураций.

Использовать функцию нужно осторожно: ошибочная команда будет отправлена сразу во все области. После завершения операции синхронизацию следует отключить:

```text
setw synchronize-panes off
```

Скрипты рабочего окружения

Если набор окон и панелей повторяется ежедневно, его можно описать в shell-скрипте:

```bash
#!/bin/bash

tmux new-session -d -s ops
tmux rename-window -t ops:0 logs
tmux send-keys -t ops:0 'tail -f /var/log/syslog' C-m

tmux new-window -t ops:1 -n monitor
tmux send-keys -t ops:1 'htop' C-m

tmux new-window -t ops:2 -n shell
tmux attach-session -t ops
```

Такой сценарий автоматически создает сессию, переименовывает окна и запускает нужные команды. Для сложных конфигураций можно применять утилиты вроде `tmuxp` или `teamocil`, позволяющие хранить описание окружения в YAML- или JSON-файлах.

Настройка конфигурации

Параметры tmux хранятся в файле `~/.tmux.conf`. В нем можно заменить неудобный префикс, включить нумерацию окон с единицы, изменить внешний вид строки состояния и настроить мышь.

Пример конфигурации:

```text
set -g mouse on
set -g base-index 1
setw -g pane-base-index 1
set -g history-limit 10000
```

Здесь включается управление мышью, окна и панели начинают нумероваться с единицы, а история терминала увеличивается до 10 000 строк. После изменения файла настройки можно перечитать без перезапуска:

```text
tmux source-file ~/.tmux.conf
```

Для более комфортной работы можно назначить более удобный префикс, например `Ctrl+a`, однако придется учитывать возможные конфликты с другими программами и привычными сочетаниями клавиш.

tmux полезен не только опытным администраторам. Он постепенно формирует предсказуемую модель работы: каждая задача получает собственное окно, долгие операции не зависят от SSH, а часто повторяющиеся действия превращаются в скрипты. Благодаря этому терминал перестает быть набором случайных вкладок и становится управляемым рабочим пространством.

Если нужно быстро освоить основные приемы, достаточно начать с трех действий: создавать именованные сессии, разделять окна на панели и отсоединяться от них перед завершением SSH-сеанса. После этого можно переходить к автоматизации, синхронизации и настройке конфигурации. Подробные примеры применения и дополнительные сценарии собраны в статье о [tmux и сохранении терминальных сессий](https://habr.com/ru/companies/selectel/articles/1074388/?utm_campaign=1074388&utm_source=habrahabr&utm_medium=rss).

Прокрутить вверх