главная - Статьи - Linux, FreeBSD
Утилита Screen
Дата обновления: 24.04.2020Теги: Linux
Утилита Screen создает отдельные сессии, в рамках которых можно выполнять команды, работать. И при желании переключаться между этими сессиями, как между окнами графического интерфейса. Это не замена работе в терминальных сессиях на одном сервере нескольких пользователей, а отдельный инструмент. Больше всего это похоже на работу по RDP. У вас может быть открыто несколько rdp-сессий. Если коннект нарушится, вы потом просто переподключаетесь и продолжаете работать. Аналогично, если кто-то подключится к вашей сессии rdp, вас отключит, а работу продолжит уже другой человек.
Установка в CentOS 7:
# yum install screen
Для установки screen в CentOS 8 нужен установленный репозиторий EPEL, после чего все будет ок:
# dnf install screen
Самое простое - запустить screen без параметров:
# screen
После чего все запускаемые команды будут выполняться в этом "экране" (примерно как запуск программы в новом окне).
Если свернуть текущий screen (CTRL+a, потом d), выполняющиеся в нем команды не прервут своего исполнения, и к этому "экрану" можно будет потом вернуться:
# screen -r
А можно сразу запустить программу в screen:
# screen -S pingscreen ping 8.8.8.8
При этом вы окажетесь в сессии с именем "pingscreen".
Полезные команды screen
Свернуть текущий screen:
нажать CTRL+a, затем d (обратите внимание, когда нажмете CTRL+a, ничего не изменится визуально, не будет уведомлений типа "а сейчас нажмите d чтобы свернуть screen").
Нажатие CTRL+C, широко используемое для прерывания текущей команды, в screen завершит работу текущего screen!
Собственное имя screen
# screen -S screenname
Задать свое название создаваемому screen, например, если если screen создается для проверки доступности чего-то:
# screen -S ping
Запустили ping, свернули screen, смотрим список скринов:
# screen -list
There are screens on:
23604.ping (Detached)
23560.pts-2.centos (Detached)
9993.pts-0.centos (Detached)
3 Sockets in /run/screen/S-root.
Отобразить список screen'ов
screen -list
screen -ls
Вернуться к свернутому screen
# screen -r
Если screen'ов несколько: "-r screenname", где screenname из примера выше может быть заданное имя "ping" или автоимена "pts-2.centos" и "pts-0.centos".
Detach screen
-d - не запускает screen, а отключает остальные сессии:
-dr - Отключиться, если возможно (detach), и подключиться к конкретной сессии.
-dm - Запустить сессию в режиме deattached режиме, полезно при запуске скриптов.
Зачем нужен detach? Если сессия сейчас активна (Attached), то session не даст с ключом -r подключиться к ней. А если форсировать detach, то сразу после этого можно подключиться к сессии.
Например:
> screen -dm -S pingscreen2 ping 8.8.8.8
создаст screen с именем pingscreen2, но не будет к нему подключаться, а даст ему статус detached и просто начнет его выполнение в фоне, в то время как вы продолжите работу. Это может быть удобно при запуске скриптов. Во-первых, выполнение скрипта не будет вам мешать. Во-вторых, если ваша терминальная сессия вдруг разорвется (чаще по ssh ралотаем же), то выполнение крипта не прервется.
Авторизуйтесь для добавления комментариев!