Установка и настройка Nginx на AlmaLinux 9: команды, запуск, firewall, конфиги, virtual host и частые ошибки. Пошаговая инструкция для быстрого старта и стабиль...
Блог компании 3v-Hosting
9 мин.
Любой, кто запускал длительные команды на удалённом сервере, хотя бы раз сталкивался с такой неприятной ситуацией, когда интернет пропал на несколько секунд, ноутбук ушёл в спящий режим или случайно закрылось окно терминала, а после повторного подключения оказывается, что процесс прервался и несколько часов работы потеряны впустую.
Такое может случаться во время резервного копирования, переноса данных, обновления системы, импорта больших баз данных или сборки проектов. А если операция занимает час или два, то повторный запуск обходится довольно дорого.
Конечно, существуют такие инструменты как nohup, systemd и cron. И эти инструменты отлично подходят для автоматизации рутинных задач. Но когда вам нужно видеть вывод программы, время от времени вводить новые команды или переключаться между несколькими задачами, тогда гораздо удобнее использовать специализированную утилиту tmux.
Для большинства Linux администраторов, DevOps-инженеров и разработчиков это давно уже привычный инструмент, который можно освоить всего за несколько минут, но в последствии он сбережёт вам кучу нервов, сил и времени.
tmux - это классический мультиплексор терминала. То есть он создаёт отдельную терминальную сессию, которая продолжает работать независимо от SSH-подключения.
Представьте себе обычное SSH-соединение как телефонный разговор. Пока связь есть - у вас всё работает. Но как только соединение оборвалось- ваш разговор закончился.
А вот при использовании tmux рабочая сессия остаётся на сервере активной, даже если вы отключились, поэтому можно вернуться через несколько минут или на следующий день, а ваш терминал останется в том же состоянии, в котором вы его оставили. Получается, что SSH используется только для подключения к уже существующей рабочей среде, но все процессы продолжают выполняться внутри tmux.
Запускать через tmux можно практически любые команды. Особенно он будет полезен для тех операций, которые выполняются достаточно долго. Примерами таких операций могут послужить, например:
rsync;
И вот если во время работы пропадёт SSH-соединение, то процесс не остановится, а после повторного подключения к удаленному серверу вам останется лишь вернуться в свою сессию.
Во всех популярных дистрибутивах Linux установка tmux занимает всего несколько секунд, так как все необходимые пакеты есть в репозиториях. Ниже мы приведём команды для установки на самые популярные дистрибутивы.
sudo apt update sudo apt install tmux
sudo dnf install tmux
sudo pacman -S tmux
Проверить установку можно с помощью команды:
tmux -V
Если на экране появилась версия программы, например:
tmux 3.5a
значит всё готово к работе.
Вся работа в tmux строится вокруг сессий. Именно внутри них запускаются программы, открываются окна и панели, а также продолжают выполняться длительные процессы после отключения от сервера.
Создать новую сессию можно одной командой:
tmux
Такой вариант подходит для быстрого запуска. Но для повседневной работы лучше сразу давать сессиям понятные имена, особенно если одновременно приходится работать с несколькими проектами.
Сделать это можно с помощью такой команды:
tmux new -s backup
После этого вы окажетесь внутри новой сессии, где сможете запускать любые другие команды, например бекап базы данных или выполнение длительного скрипта. Все процессы будут выполняться внутри tmux и не будут зависеть от состояния SSH-соединения, поэтому даже если связь с сервером оборвётся, то работа скриптов или команд продолжится, а позже вы сможете снова подключиться к этой же сессии.
Полный перечень команд вы можете найти на сайте проекта, но для повседневной работы достаточно знать всего несколько команд.
| Действие | Команда |
|---|---|
| Создать новую сессию | tmux new -s имя |
| Посмотреть список сессий | tmux ls |
| Подключиться к сессии | tmux attach -t имя |
| Завершить выбранную сессию | tmux kill-session -t имя |
| Завершить все сессии | tmux kill-server |
Этого набора вполне хватит для выполнения большинства задач.
Как мы уже поняли, главной особенностью tmux является возможность покинуть терминал, не останавливая запущенные процессы. Для этого нажмите такое сочетание клавиш:
Ctrl+B, затем D
После этого вы вернётесь в обычную оболочку. Теперь вы можете закрыть терминал, отключиться от сервера или даже выключить компьютер, но всё, что работает внутри tmux, продолжит выполняться.
Позже снова подключитесь к серверу по SSH и посмотрите список активных сессий:
tmux ls
Вы увидите те имена, которые присвоили сессиям при их создании, например:
backup deploy monitoring
Для того, чтобы вернуться в нужную вам сессию, выполните команду:
tmux attach -t backup
Вы увидите терминал в том же состоянии, в котором оставили его раньше, включая весь вывод программы, которая там выполнялась.
Именно поэтому tmux так ценят при работе с VPS. Даже если интернет неожиданно пропадёт во время резервного копирования, развёртывания Docker-приложения или обновления системы, то процесс не придётся запускать заново. Достаточно будет снова подключиться к серверу и выполнить tmux attach.
Одна из самых удобных возможностей tmux - это возможность создания нескольких рабочих пространств внутри одной сессии. Можно создавать отдельные окна, быстро переключаться между ними и при необходимости делить одно окно на несколько панелей. Например, в одном окне можно оставить логи приложения, в другом следить за загрузкой сервера, а в третьем редактировать конфигурацию веб сервера.
Если одного окна недостаточно, его можно разделить на несколько панелей. Это удобно, когда нужно одновременно наблюдать за логами и выполнять команды в той же рабочей области.

Такой подход быстро заменяет несколько отдельных SSH-подключений и делает работу с сервером заметно удобнее.
Все сочетания клавиш в tmux начинаются с так называемого префикса, которым является сочетание клавиш:
Ctrl+B
После этого нажимается вторая клавиша.
| Действие | Комбинация |
|---|---|
| Создать новое окно | Ctrl+B, затем C |
| Следующее окно | Ctrl+B, затем N |
| Предыдущее окно | Ctrl+B, затем P |
| Разделить окно по вертикали | Ctrl+B, затем % |
| Разделить окно по горизонтали | Ctrl+B, затем " |
| Переключиться между панелями | Ctrl+B, затем O |
| Закрыть текущую панель | Ctrl+B, затем X |
| Отсоединиться от сессии | Ctrl+B, затем D |
Большинство пользователей ежедневно использует лишь несколько сочетаний, которые очень быстро запоминаются и работа с tmux становится удобной, быстрой и нативной.
Не можем не упомянуть, что существует целая линейка инструментов, похожих на tmux и среди них наиболее часто упоминается nohup, который с tmux часто сравнивают, хотя задачи у них немного отличаются.
nohup также позволяет процессу продолжить работу после закрытия терминала и если нужно просто запустить команду и забыть о ней, то этого вполне достаточно.
Однако tmux сохраняет всю рабочую сессию, к которой можно снова подключиться, посмотреть вывод программ, остановить процесс, изменить параметры или продолжить работу с того же места.
Ниже мы попытались в простом табличном виде привести основные совпадения и различия самых популярных инструментов.
| Возможность | tmux | screen | nohup |
|---|---|---|---|
| Процесс продолжает работать после выхода | Да | Да | Да |
| Повторное подключение к терминалу | Да | Да | Нет |
| Несколько окон | Да | Да | Нет |
| Разделение окна на панели | Да | Ограниченно | Нет |
| Интерактивная работа | Да | Да | Нет |
Для современных Linux-систем tmux давно стал основным инструментом такого класса, который зарекомендовал себя как стабильный и удобный продукт.
После нескольких дней работы с tmux обычно появляются простые привычки, которые делают использование инструмента гораздо удобнее.
В первую очередь давайте сессиям понятные имена, ведь найти сессию backup или production намного проще, чем вспоминать, что скрывается за той или иной безымянной сессией.
Также для каждого проекта или сервера лучше создавать отдельную сессию. Так рабочее пространство остаётся организованным, а переключаться между задачами становится проще.
Ну и когда работа завершена, лучше удаляйте не нужные больше сессии. Это поможет поддерживать порядок и быстрее находить активные проекты.
Новички чаще всего допускают несколько одинаковых ошибок:
tmux kill-server, когда нужно удалить только одну сессию;Большинство этих ошибок совершается лишь однажды, но после небольшой практики работа с tmux становится привычной и почти автоматической.
Да. Для этого достаточно отсоединиться от сессии, нажав Ctrl+B, затем D. После этого можно закрыть терминал, отключиться от сервера или даже выключить компьютер. Все процессы, запущенные внутри tmux, продолжат работать.
Ничего критичного не произойдёт. SSH-соединение разорвётся, но сама tmux-сессия останется работать на сервере. После повторного подключения достаточно выполнить tmux attach, чтобы продолжить работу с того же места.
Да. Более того, именно так чаще всего и работают. Например, одну сессию можно использовать для резервного копирования, другую - для развёртывания приложения, а третью - для мониторинга сервера.
Да. Если подключиться к одной и той же сессии с нескольких устройств, везде будет отображаться один и тот же терминал. Это удобно, когда нужно продолжить работу с другого компьютера или совместно администрировать сервер.
Нет. tmux не переживает перезагрузку операционной системы. После запуска сервера потребуется создать новую сессию и при необходимости снова запустить нужные процессы.
Да. tmux работает на стороне сервера и не зависит от SSH-клиента. Подойдут PuTTY, OpenSSH, Windows Terminal, MobaXterm, Termius и любые другие программы.
Оба инструмента позволяют запускать процессы в отдельных терминальных сессиях и возвращаться к ним позже. Однако tmux предлагает более удобную работу с окнами и панелями, гибкую настройку и активно развивается, поэтому сегодня именно его чаще рекомендуют для новых проектов.
tmux - один из тех инструментов, который быстро становится частью повседневной работы с Linux-серверами. Он позволяет не беспокоиться о случайном разрыве SSH-соединения, помогает организовать рабочее пространство и избавляет от повторного запуска длительных задач.
Если вы регулярно работаете с VPS, администрируете серверы, разворачиваете Docker-приложения, переносите данные или просто выполняете команды, которые работают часами, tmux стоит освоить в первую очередь. На изучение базовых возможностей уйдёт совсем немного времени, а пользоваться ими вы, скорее всего, будете каждый день.
Как определить, кто удалил файл на Linux-сервере. Проверка Bash History, системных журналов, auditd, Docker, Git и других источников, которые помогают расследов...
Как перенести Docker Compose на новый VPS без даунтайма: подготовка сервера, перенос Docker Volumes, баз данных и файлов, проверка проекта и безопасное переключ...
Настройка автоматического обновления Ubuntu Server с помощью unattended-upgrades и Canonical Livepatch. Автоматическая установка обновлений безопасности, провер...