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

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

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

  1. # cd /usr/ports/sysutils/screen
  2. # make install clean
Работать с ним очень просто, нужно всего лишь запомнить для себя необходимые комбинации клавиш, о которых я расскажу чуть ниже, а пока - чтобы запустить программу в виртуальном терминале достаточно выполнить следующую команду:
  1. # screen your_program
  2.   например
  3. # 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". Более содержательно о функционале программы написано в мане.

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

Filtered text

CAPTCHA
Этот вопрос предназначен для предотвращения автоматизированной обработки форм.
Fill in the blank.