d0s | Настройка и использование GNU Screen во FreeBSD Go up
You are using an outdated browser. More... »
Posts d0s

Думаю никто не будет возражать против того, что наиболее используемым инструментом администратора систем UNIX является текстовая консоль. Консоль позволяет выполнять практически все административные задачи и тем более без нее нельзя обойтись при управлении серверами находящимися в другом районе города, или даже в другом городе, или в другой стране. Большинство администраторов могут достаточно лихо пользоваться консольными командами но они могут с удивлением заметить, что более опытные коллеги каким-то невообразимым образом успевают делать еще больше. В этой статье я рассмотрю один из ключей к эффективному использованию текстовой консоли — менеджер текстовых окон GNU Screen (далее просто Screen).

Возможности Screen

Одна из основных возможностей Screen — создание и управление несколькими консольными окнами, или текстовыми приложениями в одном единственном окне терминала. В один момент времени на экране терминала может находится только одно из окон (несколько их может быть только в случае если они делят экран терминала на части). Screen позволяет быстро переключаться между окнами, сохранять и позднее возвращаться к текстовой сессии и открывать доступ к ней другим пользователям. Плюс к этому Screen позволяет давать окнам заголовки, отслеживать активность в каждом окне и обмениваться содержимым окон с помощью копирования и вставки. И, вдобавок, Screen позволяет переназначать клавиши, управлять настройкой эмуляции терминала и решать еще много небольших задач, связанных с текстовыми окнами, в которых может и не быть постоянной необходимости, но которые могут помочь выполнению административной работы в отдельные моменты времени.

Установка Screen

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

Установка закончена =))

Комбинации клавиш

Приведу комбинации клавиш, которые, на мой взгляд, могут понадобиться чаще всего. В отличие от мануала клавишу буду называть своим именем. Возможно где-нибудь далее и проскочит сочетание клавиши из мануала - не обессудьте.

Ctrl-a c
Ctrl-a Сtrl-c Создать новое окно screen'а.
Ctrl-a [0..9,-] Переключиться между окнами, или получить пустое окно.
Ctrl-a " Список окон.
Ctrl-a Ctrl-a Переключение между двумя окнами - между активным и предыдущим.
Ctrl-a n|p next|prev
Ctrl-a C Очистить экран.
Ctrl-a A Позволяет ввести заголовок окна.
Ctrl-a d Отключиться от сеанса screen. (Присоединиться можно командой screen -r)
Ctrl-a k Закрыть текущее окно с подтверждением.
Ctrl-a ? Задать вопрос (очень полезно), если не знал, а еще и забыл.

Ключи запуска

Очень интересны ключи запуска. Приведу список ключей, которые могут понадобиться, на мой взгляд, чаще всего.

-ls
-list Не запуская screen выдает список отсоединенных screen'ов.

-r [pid.tty.host] Подключиться к screen или же к определенной сессии.

-x Присоединиться к неотсоединенному screen - позволяет одновременно работать с разных мест разным людям. Удобно для удаленного обучения (хотя в FreeBSD есть watch).

-R Пытается присоединиться к первому найденному отсоединенному screen. Если не находит - создает новый screen.

1
<font color="#0000CE">screen</font>rc

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

1
/usr/local/etc/screenrc

и

1
~/.screenrc

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

1

, можно указать другой файл

1
screenrc

.
Команды указываются по одной в строке, пустые строки игнорируются. Разделители между аргументами и ключами - символы табуляции или пробелы. Символ

1
#

и следующий за ним текст - комментарии (исключение - помещение его в кавычки).
Команды могут содержать ссылки на переменные окружения. Синтаксис подобен shell -

1
$VAR

или

1
${VAR}

.
Пример файла конфигурации находится в

1
/usr/local/share/examples/screen/screenrc

.
Команды можно ввести в процессе работы программы, путем нажатия

1
Ctrl-a :

.

В файле screenrc и в командном режиме доступны следующие команды:

  • acl-команды, определяющие доступ к сессии, привилегии - как для пользователей, так и для групп;
  • bind-команды - привязка клавиш;
  • команды оформления;
  • другие команды.

Читайте мануал - команд много - все таки первоисточник.

Приведу свой конфиг

###
# Screenrc configuration file
###

# Приветственное сообщение off|on
startup_message off

# визуальный биппер. off|onn
vbell on
# то, что он бипер пишет в строке статуса
vbell_msg &quot;   Uh! - Uh! - bzzz &quot;

# &quot;Красивые&quot; подписи
nethack on

# Количество строк истории хранить в буфере
defscrollback 2000
#

# Строка состояния в screen (hardstatus)

hardstatus alwayslastline &quot;%{=b}%{g}Window: %{b}%w %=%{kG}%с %D %Y-%m-%d&quot;

# Расшифровка:
# здесь (я беру параметры в одинарные кавычки):
# '%{=b}' - черный цвет фона строки. 
# '%{g} Window: ' - слово 'Window: ' зеленоe
# '%{b}%w' - список запущенных окон (звездочкой будет указан активное окно)
# '%=' - все, что идет после этого выравнивается по правому краю
# '%{kG}%с' - показывает время, я люблю формат 24-часа, без pm|am (%C%A - 12часовой с PM|AM)
# '%D, %Y-%m-%d' - показывает дату

# --- Привязки специальных клавиш ---

# отделить сессию от текущего терминала
bindkey -k k7 detach

# уничтожить текущую сессию F8
bindkey -k k8 kill

# создать новое окно F9
bindkey -k k9 screen

# вернуться к предыдущему окну F11
bindkey -k F1 prev

# перейти к следущему окну F12
bindkey -k F2 next

# Удаляем некоторые ненужные или небезопасные комбинации
bind .
bind ^\
bind \\
bind ^h
bind h

Вот и всё. Enjoy..))

Рубрики: Linux, Soft, Unix, Установка
Метки: , ,

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

helios says:
6 Июн 2010 в 23:47

Спасибо, конфиг забираю. Давно хотел побаловаться скрином.. Только я на линухе (это , кнечно не проблема, так , к сведению :))

d0s:
7 Июн 2010 в 0:03

helios пишет:

Только я на линухе (это , кнечно не проблема, так , к сведению )

Если не на Unix-системе, тогда на чем? =))