Categories: CentOSlinuxUbuntu

Использование утилиты screen в Linux

Screen – консольная утилита позволяющая в действующей SSH сессии открывать неограниченное количество независимых виртуальных терминалов (окон). Процессы, выполняемые внутри screen, не прерываются даже при обрыве сессии с сервером.

Утилита screen является отличным инструментом как для новичков в Linux, так и для опытных системных администраторов. Внутри сессии screen можно запускать процессы, которые требуют длительное время на выполнения. В это же время вы всегда можете просто закрыть консоль и запущенный процесс будет выполняться в фоне.

Установка утилиты screen в Linux

Утилита screen по умолчанию установлена в ряде дистрибутивов Linux. В CentOS 8 утилита по умолчанию не установлена, придется доставлять вручную с помощью пакетного менеджера :

# dnf install epel-release -y устанавливаем репозиторий EPEL , где размещается данная утилита

# dnf install screen -y – устанавливаем утилиту

На Debian/Ubuntu установка выполняется так:

# apt install screen

Чтобы посмотреть установленную версию screen, введите команду:

# screen --version

Screen version 4.06.02 (GNU) 23-Oct-17

Запуск и использование screen, работа с сессиями, фоновые процессы

Запустите сессию screen одной командой:

# screen

Чтобы вывести справку по использованию screen , нажмите комбинацию ctrl + a и после этого введите знак вопроса ( ? ).

Вернуться к сессии screen можно через кнопку пробел ( space )

Чтобы полностью закрыть терминал screen , нажмите сочетание клавиш ctrl +d :

[screen is terminating]

[root@server ~]#

Чтобы просто выйти из сессии screen, не закрывая ее полностью, используйтекомбинацию:

Ctrl +a d

Если у вас открыта одна сессия screen , вернуться к ней можно с помощью команды:

# screen -r

Проверить список запущенных сессий screen :

# screen -list

Или

# screen -ls

Если сессий несколько, можно получить ID сессии и подключиться к нужной:

# screen -x ID

Или

# screen -r ID

Если вы запускаете несколько сессий screen , то удобнее будет называть их по имени процесса, который там выполняется. Например:

# screen -S rsync

Теперь, если у вас несколько разных сессии именованных screen и вы легко разберетесь в какую из нах вам нужно переключится.

Есть еще очень удобная функция в screen — это разделение экрана ( split ). Экран можно делить как по горизонтали, так и по вертикали. Например, чтобы разделить экран по горизонтали, в сессии screen нужно нажать ctrl+a S .

Экран разделится на две части. Чтобы переключиться на вторую часть, введите ctrl+a tab и после переключения для активации ctrl+a c . Одновременно в двух частях, можно запускать нужные скрипты или утилиты:

Чтобы разделить экран по вертикали, используйте ctrl+a |

Более того, разделителей может быть неограниченно количество:

Переключаемся по ним все также с помощью ctrl +a tab .

Чтобы закрыть все разделители и остаться в активном окне, используйте ctrl+a Q или просто пропишите в консоли only .

Чтобы убрать умершие или зависшие сессии screen , используйте команду:

# screen -wipe

Еще несколько горячих клавиш screen:

  • Создать новое окно: Ctrl+a c
  • Перейти к следующем окну: Ctrl+a p
  • Перейти к предыдущему окну: Ctrl+a n
  • Изменить имя окна: Ctrl+a a
  • Уничтожить окно: Ctrl+a k
  • Перейти к окну с номером 1 (можно использовать цифры от 0 до 9): Ctrl+a 1

Для тонкой настройки параметров screen можно использовать конфигурационные файлы:

  • /etc/screenrc
  • ~/.screenrc

Полная справка по screen :

# man screen

Сценарии использования screen в Linux

Чаще всего утилита screen используется для операций, которые выполняются продолжительное время и чувствительны к обрыву сессии. Это могут быть обновления, копирование файлов, создание бэкапа, запуск какого-то скрипта или процесса и многое другое. В моей практике не обходится и дня, чтобы я не воспользовался данной утилитой. Чаще всего, это перенос файлов с одного сервера на другой или объемные обновления пакетов. Например, можно запустить rsync файлов с одного сервера на другой:

# screen -S backup
# rsync -avzr --progress /var/www/site/ IP:/var/www/site/

Или запустите ping до какого-либо ресурса:

В screen можно запустить любой php-скрипт, который постоянно выполняет обмен с какими-либо ресурсами, например, интеграция с сайтом или порталом:

Скрин можно запустить с такими параметрами:

# screen -A -m -d -S B24 /usr/bin/su - bitrix -c "/usr/bin/php /var/www/integration/tools/parser.php"

Мы сразу запускаем терминал и в нем выполняем запуск php-парсер, который постоянно выполняет коннект к порталу Bitrix24. Проверим список запущенных терминалов:

# screen -ls

There is a screen on:_x000D_993.B24 (Detached)

И для максимальной надежности, можно новую сессию ssh запускать сразу с включенным screen. В файл /root/.bash_profile добавьте строчку screen :

Теперь при запуске новой сессии у вас сразу будет открываться screen терминал:

В этой статье, мы рассмотрели очень гибкий инструмент screen , который помогает в повседневной работе по администрированию серверов и выполнению различных задач. Применяйте на практике данную статью, расширяйте свои навыки в области системного администрирования Linux.

admin

Share
Published by
admin

Recent Posts

Консоль удаленного рабочего стола(rdp console)

Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…

2 недели ago

Настройка сети в VMware Workstation

В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…

2 недели ago

Логи брандмауэра Windows

Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…

2 недели ago

Правильный способ отключения IPv6

Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…

2 недели ago

Ключи реестра Windows, отвечающие за параметры экранной заставки

Параметры экранной заставки для текущего пользователя можно править из системного реестра, для чего: Запустите редактор…

2 недели ago

Как управлять журналами событий из командной строки

В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…

2 недели ago