Pterohost docs

Запуск игрового сервера в 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 DDetach - отключиться от сессии
Ctrl+A KKill - завершить текущее окно
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, а не просто убиваем процесс. Это даёт серверу время корректно сохранить данные (карту, инвентари, прогресс). Для разных игр команда остановки будет разной:

ИграКоманда остановки
Minecraftstop
Rustquit
Project Zomboidquit
7 Days to Dieshutdown
Valheimquit

Частые ошибки и их решение

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

Критерийscreentmux
Год создания19872007
Поддержка панелейОграниченнаяПолноценная
КонфигурацияПростаяГибкая
Поддержка UnicodeЧастичнаяПолная
СкриптованиеБазовоеРазвитое
Порог входаНижеЧуть выше
Логированиеscreen -Lpipe-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 хостинг