GNU Screen в Linux: долгие задачи в терминале без обрыва SSH
Зачем вообще нужен screen
Долгий цикл в консоли часто рвёт не «логика приложения», а канал до сервера: минутный обрыв SSH, смена сети, ноутбук закрыли уходя из кофейни. Утилита screen даёт отдельную сессию внутри вашей оболочки: процессы остаются в фоне операционной системы даже после закрытия клиента. То же удобно, если начали задачу на одном хосте и потом зашли проверить уже с другого.
Установка
На дистрибутивах семейства Red Hat / CentOS / Alma / Rocky:
sudo dnf install screenНа Debian и Ubuntu вместо этого обычно достаточно sudo apt install screen. Пакет маленький, его спокойно держат «по умолчанию» на рабочих серверах с Битрикс и прочей веб-эксплуатацией.
Первая сессия
Команда screen без аргументов открывает новую «страницу» того же шелла — дальше можно запускать любые команды. Чтобы не убивать задачу при выходе из SSH, нужно отсоединиться от screen, а не завершать удалённый вход: типичная связка — Ctrl+a, затем d (detach). Вы снова окажетесь в обычном приглашении, но то, что было внутри screen, продолжит работать.
Полный список внутренних команд удобно открыть через Ctrl+a, затем ?; привыкните к префиксу Ctrl+a — именно он «перехвачен» screen, а не шеллом.
Именование и список
Все живые сессии смотрятся так:
screen -lsВ списке каждая строка — PID и имя сокета. Чтобы новая сессия сразу имела запоминающийся ярлык, стартуйте screen -S deploy или любой другой однословный суффикс. Уже запущенную сессию можно переименовать: Ctrl+a, затем :, ввести sessionname deploy и Enter.
Подключиться снова
Для возврата достаточно screen -r — если неоднозначно, укажите PID из screen -ls или ранее заданное имя: screen -r deploy. Вариант screen -R дополнительно пытается «поднять» существующее окно или создать новое, если подходящего нет.
Когда сессию нужно именно убить
Если открыт screen с вашей оболочкой: Ctrl+a, затем k, подтверждение — закрывается текущее окно screen. Для отсоединённой сессии удобнее из внешней оболочки: screen -S deploy -X kill. Не путайте с аккуратным detach: принудительное завершение отдаёт сигналы тем процессам, что вы внутри запускали.
Практический контекст админа
Связка «долгая синхронизация каталога → screen → отключиться → проверить через час» уменьшает сюрпризы при восстановлении из бэкапов, миграции Битрикса и любом сценарии, где прогресс-бар важнее, чем мгновенный ответ терминала.
Не хотите копаться сами?
Починю за 1-3 дня. Без предоплаты — оплата по результату.
15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии