- Home »

Установка и использование Screen на облачном сервере Ubuntu
Многие знают ситуацию: подключился к серверу по SSH, запустил важный процесс, и тут… связь оборвалась. Процесс убился, вся работа коту под хвост. Или хуже — запускаешь бэкап на несколько часов, а потом случайно закрываешь терминал. Screen — это та самая утилита, которая решает эту проблему раз и навсегда. В этой статье разберём, как установить и использовать Screen на Ubuntu, чтобы ваши процессы работали независимо от SSH-подключения.
Что такое Screen и зачем он нужен
Screen (GNU Screen) — это мультиплексор терминала, который позволяет создавать виртуальные терминальные сеансы, которые продолжают работать даже после отключения SSH. Простыми словами, это такая «виртуальная консоль», которая живёт своей жизнью на сервере.
Основные преимущества Screen:
- Процессы не завершаются при обрыве SSH-соединения
- Можно создавать несколько окон в одном сеансе
- Возможность подключиться к сеансу с любого места
- Удобное переключение между задачами
- Возможность совместной работы (screen sharing)
Установка Screen на Ubuntu
В большинстве дистрибутивов Ubuntu Screen уже предустановлен. Проверим:
screen --version
Если команда не найдена, устанавливаем:
sudo apt update
sudo apt install screen
Для пользователей VPS или выделенного сервера процесс установки идентичен — никаких дополнительных настроек не требуется.
Основные команды Screen
Вот базовый набор команд для ежедневной работы:
# Создать новый сеанс
screen
# Создать сеанс с именем
screen -S mysession
# Посмотреть список сеансов
screen -ls
# Подключиться к сеансу
screen -r session_name
# Отключиться от сеанса (не завершая его)
Ctrl+A, затем D
# Завершить сеанс
exit
Практические примеры использования
Пример 1: Длительный процесс резервного копирования
# Создаём сеанс для бэкапа
screen -S backup
# Запускаем процесс резервного копирования
tar -czf /backup/website-$(date +%Y%m%d).tar.gz /var/www/html/
# Отключаемся от сеанса
Ctrl+A, затем D
# Позже подключаемся обратно
screen -r backup
Пример 2: Мониторинг системы
# Создаём сеанс для мониторинга
screen -S monitoring
# Запускаем htop
htop
# Создаём новое окно в том же сеансе
Ctrl+A, затем C
# Запускаем мониторинг логов
tail -f /var/log/syslog
# Переключаемся между окнами
Ctrl+A, затем N (следующее окно)
Ctrl+A, затем P (предыдущее окно)
Полезные горячие клавиши
Все команды Screen начинаются с префикса Ctrl+A:
Команда | Действие |
---|---|
Ctrl+A, C | Создать новое окно |
Ctrl+A, N | Следующее окно |
Ctrl+A, P | Предыдущее окно |
Ctrl+A, “ | Список всех окон |
Ctrl+A, K | Закрыть текущее окно |
Ctrl+A, D | Отключиться от сеанса |
Ctrl+A, [ | Режим прокрутки |
Ctrl+A, S | Разделить экран горизонтально |
Ctrl+A, | | Разделить экран вертикально |
Конфигурация Screen
Можно настроить Screen под свои нужды, создав файл ~/.screenrc
:
# Отключить приветственное сообщение
startup_message off
# Увеличить буфер прокрутки
defscrollback 10000
# Показывать статус-строку
hardstatus alwayslastline
hardstatus string '%{= kG}%-Lw%{= kW}%50>%n%f* %t%{= kG}%+Lw%< %{= kG}%-=%D %M %d %Y %c%{-}'
# Автоматически отключаться при закрытии терминала
autodetach on
# Визуальные уведомления
vbell on
vbell_msg "Bell in window %n"
Screen vs альтернативы
Утилита | Плюсы | Минусы |
---|---|---|
Screen | Простота, стабильность, везде есть | Устаревший интерфейс, ограниченная функциональность |
tmux | Современный, больше возможностей | Не везде предустановлен |
nohup | Очень простой для одиночных команд | Нет интерактивности |
systemd | Интеграция с системой | Сложнее для простых задач |
Продвинутые возможности
Совместная работа
Screen позволяет нескольким пользователям подключаться к одному сеансу:
# Создать сеанс с возможностью совместной работы
screen -S shared
# Другой пользователь может подключиться
screen -x shared
Логирование сеансов
# Включить логирование в текущем окне
Ctrl+A, затем H
# Логи сохранятся в файл screenlog.0
Автоматический запуск сеансов
Можно создать скрипт для автоматического запуска нужных сеансов:
#!/bin/bash
# auto-screen.sh
# Создаём сеанс для мониторинга
screen -dmS monitoring htop
# Создаём сеанс для логов
screen -dmS logs tail -f /var/log/syslog
# Создаём сеанс для работы
screen -dmS work
echo "Сеансы созданы. Используйте 'screen -ls' для просмотра."
Типичные ошибки и их решения
Проблема: "There is no screen to be resumed"
Это означает, что сеанс не найден. Проверьте список сеансов:
screen -ls
Проблема: Сеанс в статусе "Attached"
Если сеанс показывается как подключённый, но вы не можете к нему подключиться:
# Принудительно отключить и подключиться
screen -D -r session_name
Проблема: Слишком много сеансов
Для очистки мёртвых сеансов:
screen -wipe
Интересные факты и нестандартное использование
- Screen существует с 1987 года — это один из старейших мультиплексоров
- Можно использовать Screen для создания "киосков" — терминалов с ограниченным доступом
- Screen может работать как простой чат между пользователями через shared sessions
- В некоторых дата-центрах Screen используется для управления serial console серверов
Автоматизация с Screen
Screen отлично интегрируется в скрипты автоматизации:
#!/bin/bash
# deploy-script.sh
# Создаём сеанс для деплоя
screen -dmS deploy
# Отправляем команды в сеанс
screen -S deploy -p 0 -X stuff "cd /var/www/html^M"
screen -S deploy -p 0 -X stuff "git pull origin main^M"
screen -S deploy -p 0 -X stuff "composer install --no-dev^M"
screen -S deploy -p 0 -X stuff "php artisan migrate^M"
echo "Деплой запущен в сеансе 'deploy'"
Заключение и рекомендации
Screen — это must-have утилита для любого сисадмина и разработчика, работающего с серверами. Несмотря на свой возраст, она остаётся актуальной и полезной. Да, tmux может быть более современным, но Screen проще в освоении и гарантированно есть на любом сервере.
Рекомендации по использованию:
- Используйте Screen для всех длительных процессов на сервере
- Создавайте именованные сеансы для разных задач
- Настройте ~/.screenrc под свои потребности
- Регулярно очищайте мёртвые сеансы командой screen -wipe
- Для простых задач Screen лучше tmux, для сложных — наоборот
Screen превратит вашу работу с сервером из стресса в удовольствие. Больше никаких потерянных процессов из-за обрыва связи!
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.