Менеджер окон screen

Значительную часть времени приходится администрировать сервера удаленно, что вызывает некоторые проблемы при работе с приложениями, не умеющими работать в фоне, или в случае, если нужно контролировать процесс работы такого приложения. Главной проблемой в таком случае является некоторая вероятность потери связи с сервером, что в свою очередь повлечет за собой завершение всех приложений, запущенных в сетевом сеансе, и соответственно, потерю результатов их работы. Примером такой ситуации может быть процесс сборки ядра или мира. Конечно при обрыве связи можно заново подключиться и продолжить процесс сборки, но ведь не каждый будет сидеть перед монитором и дожидаться его завершения. Одним из решений конкретной проблемы (в данном случае - процесс сборки ядра или мира) может быть запуск такого процесса в фоне. Но такое решение не подойдет, например, для интерактивных приложений (это могут быть некоторые игровые сервера, торрент клиенты, например rtorrent, и др.). Поэтому лучше воспользоваться универсальным решением - менеджером экранов screen.

Screen - полноэкранный менеджер окон, который мультиплексирует физический терминал между несколькими приложениями, так же поддерживает отдельный буфер истории для каждого виртуального терминала и позволяет копировать/вставлять отдельные регионы между виртуальными терминалами. От теории к делу - ставим его из портов (параметры сборки я оставил без изменений):

cd /usr/ports/sysutils/screen
make install clean

Работать с ним очень просто, нужно всего лишь запомнить для себя необходимые комбинации клавиш, о которых я расскажу чуть ниже, а пока - чтобы запустить программу в виртуальном терминале достаточно выполнить следующую команду:

# screen your_program
 например
# screen csh

При этом screen создает единственное окно (виртуальный терминал), в котором и выполняется эта программа.

Некоторые полезные ключи:

  • b - размер буфера для истории, указывается в линиях
  • ls - выводит список виртуальных терминалов
  • d - создает сессию, но не подсоединяется к ней (данную фишку можно использовать в стартовых скриптах)
  • x - подключиться к не отсоединенной сессии
  • S - задать имя сессии. Будет отображаться в списке терминале, а так же можно использовать это имя с ключом -r, чтобы подключиться к нужной сессии
  • R - попытаться подключиться к первой отсоединенной сессии. Если получится, то все остальные ключи будут проигнорированы. Если такую сессию найти не удастся, то работа программы продолжится как-будто ключ -R не был указан.
  • r - подключиться к сессии с заданным именем

Горячие клавиши (любой горячей клавише предшествует комбинация ctrl+a, то есть сначала жмем ctrl+a, а потом саму клавишу):

  • ' - переключиться к окну с заданным именем или номером
  • " - вывести список всех окон
  • 0-9 - выбрать окно с нужным номером
  • - (минус) - переключиться на пустое окно
  • ctrl+a - переключиться на предыдущее активное окно
  • A - задать имя текущего окна
  • c - создать новое окно, с запущенной в нем оболочной и переключиться на него
  • C - очистить экран
  • d - отключиться от терминала
  • i - показать информацию о текущем окне
  • k - закрыть текущее окно
  • l - полностью обновить текущее окно
  • N - вывести номер и имя текущего окна
  • n - переключиться на следующее окно
  • p - переключиться на предыдущее окно
  • q - отправить комбинацию клавиш ctrl+q текущему окну
  • t - показать информацию о системе
  • v - показать версию и дату компиляции программы
  • ? - показать справку о горячих клавишах

Так же многие параметры можно задать через конфигурационный файл, который находится либо здесь - "/usr/local/etc/screenrc", либо в домашней папке пользователя "~/.screenrc". Более содержательно о функционале программы написано в мане.

Добавить комментарий

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Яндекс.Метрика