Запуск игрового сервера в screen и tmux (Linux)
Как запустить игровой сервер в screen или tmux на Linux: команды, сессии, автозапуск, логи и частые ошибки - полный гайд 2026.
Кратко: Без screen или tmux игровой сервер останавливается при закрытии SSH. Решение - создать постоянную сессию командой
screen -S serverилиtmux new -s server, запустить сервер внутри и отключиться через Ctrl+A D (screen) или Ctrl+B D (tmux).
Запуск игрового сервера в screen и tmux (Linux)
Каждый, кто впервые настраивал игровой сервер на Linux, сталкивался с одной проблемой: закрыл терминал - сервер упал. Причина в том, что процессы привязаны к SSH-сессии, и при её завершении ядро отправляет сигнал SIGHUP всем дочерним процессам. Утилиты screen и tmux решают эту проблему, создавая виртуальные терминальные сессии, которые живут независимо от SSH-соединения. В 2026 году оба инструмента остаются стандартом для ручного управления серверами - systemd-юниты удобны для продакшена, но screen и tmux незаменимы при отладке, тестировании и работе с несколькими инстансами.
Pterohost - игровой хостинг с защитой от DDoS, NVMe-дисками и поддержкой 24/7. Поднять сервер Minecraft, Rust, CS2 или любой другой игры можно за пару минут без ручной настройки screen. Промокод 4START даёт -20% на первый заказ. Заказать Minecraft хостинг
Что такое screen и tmux и зачем они нужны
GNU Screen - мультиплексор терминала, разработанный ещё в 1987 году. Он создаёт виртуальный терминал (сессию), который продолжает работать после отключения пользователя. К нему можно переподключиться в любой момент с любой машины.
tmux (Terminal MUltipleXer) - более современная альтернатива, появившаяся в 2007 году. Главные преимущества перед screen: поддержка нескольких окон и панелей в одной сессии, лучшая совместимость с Unicode, гибкий конфигурационный файл и скриптование.
Оба инструмента решают одну задачу - отвязать процесс от SSH-соединения. Это критично для игровых серверов по нескольким причинам:
- Серверы работают непрерывно часами и сутками
- SSH-соединение может упасть из-за нестабильного интернета
- При завершении SSH все дочерние процессы получают SIGHUP и гибнут
- Нужна возможность подключиться и посмотреть консоль сервера из любого места
Альтернатива - запустить процесс через nohup или & с перенаправлением вывода, но тогда теряется интерактивная консоль сервера. screen и tmux сохраняют полный интерактивный доступ к терминалу.
Установка screen и tmux
На большинстве дистрибутивов оба пакета доступны в стандартных репозиториях.
Debian/Ubuntu:
apt update && apt install -y screen tmux
CentOS/RHEL 8+/Rocky Linux:
dnf install -y screen tmux
Arch Linux:
pacman -S screen tmux
Проверка версий:
screen --version
tmux -V
На момент 2026 года актуальные версии - screen 4.9.x и tmux 3.4+.
Работа с GNU Screen
Создание сессии и запуск сервера
Создать именованную сессию для игрового сервера:
screen -S minecraft
После этой команды вы окажетесь внутри сессии - визуально терминал не изменится. Теперь запускаем сервер:
cd /opt/minecraft
java -Xmx4G -Xms2G -jar server.jar nogui
Для Rust-сервера это выглядит так:
cd /opt/rust-server
./RustDedicated -batchmode -nographics +server.hostname "My Server" +server.port 28015
Отключение от сессии (detach)
Чтобы “отсоединиться” от сессии, не останавливая сервер:
- Нажать Ctrl+A, затем D (detach)
После этого вы вернётесь в основной терминал, а сессия с сервером продолжит работу в фоне.
Управление сессиями
Посмотреть список активных сессий:
screen -ls
Вывод будет примерно таким:
There are screens on:
12345.minecraft (06/05/2026 14:32:15) (Detached)
12567.rust (06/05/2026 14:45:08) (Detached)
2 Sockets in /run/screen/S-root.
Подключиться к конкретной сессии:
screen -r minecraft
Если сессия одна, можно без имени:
screen -r
Если сессия отображается как “(Attached)” - к ней уже подключён другой терминал. Принудительное подключение (отключив предыдущего):
screen -D -r minecraft
Полезные горячие клавиши screen
Все команды screen начинаются с префикса Ctrl+A:
| Комбинация | Действие |
|---|---|
| Ctrl+A D | Detach - отключиться от сессии |
| Ctrl+A K | Kill - завершить текущее окно |
| Ctrl+A C | Создать новое окно |
| Ctrl+A N | Следующее окно |
| Ctrl+A P | Предыдущее окно |
| Ctrl+A “ | Список окон |
| Ctrl+A H | Начать/остановить запись лога (hardcopy log) |
| Ctrl+A [ | Режим прокрутки (выход - Q или Enter) |
| Ctrl+A ? | Справка по горячим клавишам |
Логирование в screen
Включить автоматическую запись лога при создании сессии:
screen -L -S minecraft
Лог пишется в файл screenlog.0 в текущей директории. Чтобы задать своё имя файла:
screen -L -Logfile /var/log/minecraft.log -S minecraft
Включить логирование прямо внутри сессии: Ctrl+A H (файл hardcopy.N в домашней директории).
Работа с tmux
Создание сессии
tmux new -s minecraft
Или сокращённо:
tmux new-session -s minecraft
Внутри сессии запускаем сервер:
cd /opt/minecraft && java -Xmx4G -jar server.jar nogui
Отключение от сессии tmux
Горячая клавиша: Ctrl+B, затем D (detach)
В отличие от screen, в tmux префикс по умолчанию - Ctrl+B (не Ctrl+A).
Управление сессиями tmux
Список сессий:
tmux ls
# или
tmux list-sessions
Подключиться к сессии:
tmux attach -t minecraft
# или
tmux a -t minecraft
Если сессия одна:
tmux attach
Завершить сессию (убить сервер):
tmux kill-session -t minecraft
Окна и панели в tmux
Это главное преимущество tmux над screen - возможность разделить терминал на несколько окон и панелей.
Работа с окнами:
| Комбинация | Действие |
|---|---|
| Ctrl+B C | Создать новое окно |
| Ctrl+B N | Следующее окно |
| Ctrl+B P | Предыдущее окно |
| Ctrl+B 0-9 | Перейти к окну по номеру |
| Ctrl+B , | Переименовать текущее окно |
| Ctrl+B & | Закрыть текущее окно |
| Ctrl+B W | Список окон |
Практический пример: запустить три сервера в одной tmux-сессии:
tmux new -s servers
# Окно 0: Minecraft сервер
java -Xmx4G -jar /opt/minecraft/server.jar nogui
# Создаём окно 1
# Ctrl+B C
cd /opt/rust-server && ./RustDedicated -batchmode
# Создаём окно 2
# Ctrl+B C
cd /opt/cs2-server && ./cs2.sh
Работа с панелями (разделение экрана):
| Комбинация | Действие |
|---|---|
| Ctrl+B % | Разделить горизонтально (два столбца) |
| Ctrl+B “ | Разделить вертикально (две строки) |
| Ctrl+B стрелки | Переключаться между панелями |
| Ctrl+B Z | Развернуть/свернуть панель на весь экран |
| Ctrl+B X | Закрыть текущую панель |
Логирование в tmux
Включить запись вывода панели в файл:
# Внутри tmux: Ctrl+B, затем введи команду через :
# Prefix + : открывает командную строку tmux
В командной строке tmux (Ctrl+B :):
pipe-pane -o 'cat >> /var/log/minecraft-$(date +%Y%m%d).log'
Остановить запись:
pipe-pane
Более удобный способ - через конфиг ~/.tmux.conf:
# Включить логирование через bind-key
bind-key H pipe-pane -o 'cat >> ~/tmux-#S-#W.log' \; display-message 'Toggled logging to ~/tmux-#S-#W.log'
Конфигурация tmux (~/.tmux.conf)
Базовый конфиг для администраторов игровых серверов:
# Сменить префикс на Ctrl+A (как в screen)
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix
# Включить поддержку мыши
set -g mouse on
# Увеличить историю прокрутки
set -g history-limit 50000
# Нумерация окон с 1 (удобнее)
set -g base-index 1
# Автоматически переименовывать окна
set-window-option -g automatic-rename on
# Цветная строка статуса
set -g status-bg colour235
set -g status-fg colour136
# Показывать имя сессии и окна в статусе
set -g status-left '[#S] '
set -g status-right '#H %d/%m %H:%M'
Применить конфиг без перезапуска:
tmux source-file ~/.tmux.conf
Автозапуск через systemd
Использование screen/tmux напрямую не даёт автоматического старта при перезагрузке. Для этого нужен systemd-юнит.
systemd + screen
Создать файл /etc/systemd/system/minecraft-screen.service:
[Unit]
Description=Minecraft Server (screen)
After=network.target
[Service]
Type=forking
User=minecraft
WorkingDirectory=/opt/minecraft
ExecStart=/usr/bin/screen -dmS minecraft java -Xmx4G -Xms2G -jar server.jar nogui
ExecStop=/usr/bin/screen -S minecraft -X stuff "stop\n"
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Ключевой флаг: -dm - запустить сессию в detached-режиме без присоединения. -S minecraft - имя сессии.
systemd + tmux
Создать файл /etc/systemd/system/minecraft-tmux.service:
[Unit]
Description=Minecraft Server (tmux)
After=network.target
[Service]
Type=forking
User=minecraft
WorkingDirectory=/opt/minecraft
ExecStart=/usr/bin/tmux new-session -d -s minecraft "java -Xmx4G -Xms2G -jar server.jar nogui"
ExecStop=/usr/bin/tmux send-keys -t minecraft "stop" Enter
ExecStop=/bin/bash -c 'sleep 5; /usr/bin/tmux kill-session -t minecraft 2>/dev/null || true'
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Активировать и запустить:
systemctl daemon-reload
systemctl enable minecraft-tmux.service
systemctl start minecraft-tmux.service
systemctl status minecraft-tmux.service
Теперь после перезагрузки сервер запустится автоматически, а подключиться к консоли можно через:
tmux attach -t minecraft
Корректная остановка сервера
Важный момент: в ExecStop мы отправляем команду stop через tmux/screen, а не просто убиваем процесс. Это даёт серверу время корректно сохранить данные (карту, инвентари, прогресс). Для разных игр команда остановки будет разной:
| Игра | Команда остановки |
|---|---|
| Minecraft | stop |
| Rust | quit |
| Project Zomboid | quit |
| 7 Days to Die | shutdown |
| Valheim | quit |
Частые ошибки и их решение
screen: Cannot open your terminal
Ошибка при попытке запустить screen от имени другого пользователя через sudo:
Cannot open your terminal '/dev/pts/0' - please check.
Решение: либо войти под нужным пользователем напрямую (su - minecraft), либо перед запуском screen выполнить:
script /dev/null
screen -S minecraft
tmux: no server running
no server running on /tmp/tmux-0/default
Это не ошибка - просто нет активных tmux-сессий. Создайте новую: tmux new -s имя.
Сессия висит как (Attached)
Если вы случайно закрыли терминал без detach, сессия остаётся помечена как Attached. Принудительное переподключение:
# screen
screen -D -r minecraft
# tmux
tmux attach -t minecraft
# tmux сам разберётся с "занятостью" сессии
Не могу подключиться к сессии другого пользователя
screen хранит сессии в /run/screen/S-<username>/. Подключиться к сессии другого пользователя напрямую нельзя без root-доступа. От root:
su - minecraft -c "screen -r minecraft"
Или через tmux с общим серверным сокетом:
# Запустить сервер с общим сокетом
tmux -S /tmp/shared-tmux new -s minecraft
chmod 777 /tmp/shared-tmux
# Другой пользователь подключается
tmux -S /tmp/shared-tmux attach -t minecraft
Сервер не реагирует на команды
Если после ExecStop сервер не реагирует на команду остановки, добавьте задержку и принудительное завершение:
ExecStop=/usr/bin/tmux send-keys -t minecraft "stop" Enter
ExecStop=/bin/bash -c 'for i in $(seq 1 30); do tmux has-session -t minecraft 2>/dev/null || exit 0; sleep 1; done; tmux kill-session -t minecraft'
Сравнение screen и tmux
| Критерий | screen | tmux |
|---|---|---|
| Год создания | 1987 | 2007 |
| Поддержка панелей | Ограниченная | Полноценная |
| Конфигурация | Простая | Гибкая |
| Поддержка Unicode | Частичная | Полная |
| Скриптование | Базовое | Развитое |
| Порог входа | Ниже | Чуть выше |
| Логирование | screen -L | pipe-pane |
| Установка по умолчанию | Часто предустановлен | Обычно требует установки |
Для простого случая “один сервер - одна сессия” оба инструмента одинаково хороши. Если нужно управлять несколькими серверами одновременно, видеть их консоли бок о бок или активно скриптовать - выбирайте tmux.
Практические рецепты для разных игр
Minecraft (Paper/Spigot)
# Создать сессию и запустить
tmux new -d -s mc "cd /opt/minecraft && java -Xmx6G -Xms2G -XX:+UseG1GC -jar paper.jar nogui"
# Отправить команду без подключения
tmux send-keys -t mc "say Server restart in 5 minutes" Enter
# Подключиться к консоли
tmux attach -t mc
Rust Dedicated Server
screen -dmS rust bash -c "cd /opt/rust-server && ./RustDedicated \
-batchmode -nographics \
+server.port 28015 \
+server.hostname 'My Rust Server' \
+server.maxplayers 100 \
+server.saveinterval 300 \
2>&1 | tee /var/log/rust-server.log"
Project Zomboid
tmux new -d -s pz "cd /opt/pz-server && bash start-server.sh -servername myserver"
7 Days to Die
screen -L -Logfile /var/log/7dtd.log -dmS 7dtd \
bash -c "cd /opt/7dtd && ./startserver.sh -configfile=serverconfig.xml"
Связанные материалы
При настройке игровых серверов на Linux часто требуется настройка базы данных для плагинов - подробности в статье Настройка MySQL баз данных. Для загрузки файлов сервера и бэкапов используйте FTP и SFTP - подключение к серверу. Если планируете переехать с другого хостинга - читайте Перенос сервера на хостинг.
Заключение
screen и tmux - базовые инструменты любого администратора игровых серверов на Linux. screen подойдёт для простых сценариев и тем, кто только начинает работу с Linux-серверами. tmux - выбор для более опытных администраторов, которым нужна гибкость: несколько окон, панелей, удобное логирование и скриптование. Для продакшен-серверов стоит дополнить screen/tmux системным юнитом через systemd - это даст автозапуск при перезагрузке и корректную остановку. Комбинация systemd + tmux на сегодняшний день является наиболее распространённой практикой для самостоятельного управления игровыми серверами.
Pterohost - хостинг игровых серверов с NVMe-накопителями, защитой от DDoS и технической поддержкой 24/7. Не нужно возиться с screen и tmux вручную - панель управления берёт это на себя. Промокод 4START даёт -20% на первый заказ. Заказать Minecraft хостинг