Как эффективно использовать команды screen в Linux

Команда screen в Linux - незаменимый инструмент для всех, кто работает с терминальными сессиями. Она позволяет запускать несколько окон терминала в рамках одной терминальной сессии, что значительно упрощает одновременное управление несколькими процессами. Независимо от того, используете ли вы команды screen для личных нужд или администрируете удалённые серверы, понимание различных команд screen в Linux может существенно повысить вашу продуктивность.

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

Что такое команда screen в Linux?

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

Команда screen в Linux позволяет управлять несколькими задачами или процессами, не открывая несколько окон терминала. Возможность отключиться от сессии, а затем подключиться к ней позже обеспечивает непрерывное управление задачами даже через удалённые подключения.

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

Запуск и просмотр списка сессий screen

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

screen

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

screen -ls

В выводе будут показаны все ваши запущенные сессии screen вместе с их уникальными идентификаторами, например:

There is a screen on:

2999.pts-6.localhost (Detached)

1920.PTS-6.localhost (Detached)

Чтобы снова подключиться к сессии, воспользуйтесь командой screen -r с ID сессии:

screen -r 2999.pts-6.localhost

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

Эта команда просмотра списка сессий screen может быть очень полезной, когда вы управляете несколькими задачами одновременно и нужно быстро переключаться между ними. Вы также можете воспользоваться командой screen -r с идентификатором сессии, чтобы сразу подключиться к активной сессии.

Основные команды screen и их использование

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

1. Создание сессий и управление ими

Чтобы создать новую сессию screen с собственным именем:

screen -S MySession

Чтобы отключиться от сессии, не закрывая её:

Ctrl+A, D

Чтобы снова подключиться к сессии после отключения:

screen -r

2. Перемещение между сессиями

Чтобы переключаться между разными окнами screen:

Ctrl+A, N (Next window)

Ctrl+A, P (Previous window)

Чтобы вывести список всех окон в текущей сессии:

Ctrl+A, W

Чтобы перейти к определённому окну:

Ctrl+A, 0-9 (switch to the window with this number)

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

Расширенные команды screen

Существуют различные флаги screen, которые позволяют настроить поведение команды screen. Эти флаги помогают управлять тем, как ведут себя ваши команды screen в Linux.

  • -d -m: запуск сессии screen в отключённом режиме (без подключения к ней).
screen -d -m top
  • -L: включение журналирования для текущей сессии screen, при котором вывод сессии будет сохраняться в файл.
screen -L
  • -S: запуск сессии с собственным именем.
screen -S MySession

Эти флаги позволяют автоматизировать такие задачи, как журналирование, выполнение команд в фоновом режиме и отключение от сессий без влияния на текущие процессы. Команда screen обладает широкими возможностями настройки для пользователей, которым нужна гибкость в управлении терминальными сессиями.

Управление сессиями screen для нескольких пользователей

Ещё одна полезная возможность команды screen - совместный доступ к сессии для нескольких пользователей. Это удобно для совместной работы, например когда нескольким администраторам нужно следить за одним сервером.

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

 1. Запустите сессию screen:

screen -S MySession
  • Нажмите Ctrl+A, а затем :, чтобы перейти в командный режим.
  • Введите multiuser on и нажмите Enter.
  • Теперь вы можете предоставить доступ другим пользователям, введя:
Ctrl+A, :multiuser on

 2. Другой пользователь может присоединиться к сессии, введя:

screen -x MySession

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

Полезные команды screen для управления сессиями

Вот краткий обзор самых полезных команд screen, которые стоит знать, чтобы максимально эффективно работать с сессиями screen:

Ctrl+A, C: Create a new screen window.

Ctrl+A, N: Switch to the next screen window.

Ctrl+A, P: Switch to the previous screen window.

Ctrl+A, W: View a list of all screen windows.

Ctrl+A, Ctrl+A: Switch back to the previously viewed window.

Ctrl+A, D: Detach from the current screen session.

screen -R: Reattach to a detached session.

Ctrl+A, ?: Show a list of all available commands.

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

Команды screen для журналирования и сохранения вывода

Если нужно записывать вывод сессии в журнал, screen предлагает простой способ сохранить всё, что происходит в сессии. Чтобы начать журналирование, просто используйте параметр -L при запуске сессии:

screen -L -S MySession

По умолчанию весь вывод сессии будет сохраняться в файл screenlog.0. Вы также можете указать собственное имя файла:

screen -L -S MySession -Logfile /path/to/mylogfile.txt

Журналирование полезно для ведения записей о длительных процессах или для документирования.

Команды screen для управления процессами

Одна из мощных возможностей screen - запуск команд в фоновом режиме и продолжение их выполнения даже после отключения терминала. Вот как можно использовать команды screen для управления процессами:

  • Чтобы запустить фоновый процесс в сессии screen:
screen -S MySession -d -m long-running-command
  • Чтобы завершить сессию после завершения процесса:
screen -S MySession -X quit
  • Чтобы отправить команду в окно screen:
screen -S MySession -p 0 -X exec ls /home

Эти команды позволяют выполнять задачи в фоновом режиме, даже если вы отключитесь или закроете терминал.

Приёмы и советы для screen

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

 1. Буфер прокрутки: по умолчанию screen позволяет прокручивать историю сессии назад. Чтобы прокрутить вверх, используйте:

Ctrl+A, ESC

Затем с помощью клавиш со стрелками прокручивайте историю. Нажмите ESC, чтобы выйти из режима прокрутки.

 2. Режим разделения экрана: вы можете разделить окно screen на несколько панелей:

Press Ctrl+A, then S to split the screen.

Press Ctrl+A, then Tab to switch between panes.

 3. Отправка вывода в файл: перенаправьте вывод запущенной команды в файл с помощью команды screen:

screen -S MySession -p 0 -X log

Команды screen в Linux для автоматизации

Команды screen в Linux также можно использовать для автоматизации повторяющихся задач. Вот несколько примеров:

 1. Запуск фоновой сессии с командой:

screen -S MySession -d -m long-running-command

 2. Автоматизация управления файлами в сессии screen:

screen -S MySession -p 0 -X exec ls /home/user

 3. Запуск скрипта в отключённой сессии:

screen -S MySession -d -m /bin/bash /path/to/script.sh

Эти команды особенно полезны, когда нужно запускать несколько процессов одновременно и автоматизировать их выполнение в фоновом режиме.

Заключение

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

 

Blog