Консольный оконный менеджер - SCREEN
SCREEN - полноэкранный и достаточно мощный консольный оконный менеджер с поддержкой скроллинга и поиска в окне и функцией копирования-вставки между ними. Наиболее интересная функция данного менеджера заключается в том что Вы можете в любой момент отсоединиться от своего screen`a и закрыть сеанс работы в шеле. После этого Вы можете присоединившись к screen`у вновь продолжить свою работу с того места где Вы остановились.
В чем собственно говоря удобство, небольшой пример из личного опыта. Интернет подключение по ADSL технологии, что подразумевает обрыв связи и переподключение, хоть и автоматически, но раз в сутки стабильно и без согласия кого-либо (особенности ADSL). Занимаясь удаленным администрированием серверов, для собственного удобства, как правило открываю несколько SSH сессий с разными серверами, и может случится неприятная ситуация, когда на одном из серверов компилируется какое-то тяжелое приложение, ядро или мир системы, а на другом например запущен какой-то скрипт выводящий данные в окно терминала, и которые я отслеживаю в реалтайме, ну или производятся какие-то другие работы, не суть важно, вдруг обрывается связь. Конечно можно перенаправлять вывод в файл, но у меня это в привычку не вошло, мне интересней быть в курсе происходящего в системе в данный момент, насколько это возможно конечно в данный момент. В общем по сути, это означает, что никто на 100% не скажет, насколько успешно завершилась операция, запущенная до обрыва связи, а это означает, что нужно переделать/запустить заново, в общем потеря времени и расход нервных клеток.
Теперь ближе к сути. По-умолчанию screen в системе не установлен, напомню, речь идет в контексте операционной системы Freebsd 8-й ветки.
# cd /usr/ports/sysutils/screen # make install
В самом screen, почти все сочетания клавиш работают через комбинацию [ Ctrl+a ], то есть сначала нажимаем ее, а уже затем управляющую комбинацию.
Для запуска просто набираем в консоли screen.
Опции командной строки:
-rd - подключиться к screen. Будет произведён detach для остальных сессий.
-r <номер_сессии> - подключение к определённой сессии.
-ls - список запущенных менеджеров.
-x - подключение к неотсоединённому screen. Для одновременной работы с одним screen.
Наиболее часто используемые мной сочетания клавиш:
Ctrl+a, c | создать новое окно терминала |
Ctrl+a, [0..9] | переключение между окнами |
Ctrl+a, " | список окон |
Ctrl+a, d | отсоединить screen от экрана. Сам screen при этом никуда не девается и висит в фоне, продолжая выполнять задачи |
Ctrl+a, S | текущее окно разделяется на две части и в обоих можно открыть по новому окну(режим сплита) |
Ctrl+a, Tab | переход между окнами, созданными предыдущей командой |
Ctrl+a, Q | выход из режима сплита |
Ctrl+a, k | убить текущее окно терминала (попросит подтверждения) |
Ctrl+a, \ | закрыть screen, все виртуальные терминалы будут при это убиты (попросит подтверждения). |
Ctrl+a, ? | справка по доступным командам |
Ctrl+a, C | очистить окно |
Ctrl+a, F | подогнать размер окна |
Ctrl+a, H | протоколирование в файл screenlog.<номер_окна> |
Ctrl+a, ? | помощь |
Программа screen может работать сколь угодно долго, пока не будет перезагружен сервер. Если такое случится, в системе останутся мертвые тушки, ранее работавших экземпляров screen, о чем вы будете проинформированы следующим образом:
# screen -rd There are screens on: 48273.ttyp5.hostname (Dead ???) Remove dead screens with 'screen -wipe'. There is no screen to be detached.
тут-же предложен вариант избавления от трупиков:
screen -wipe
Ну и ещё можно поиграться с настройками внешнего вида, подрихтовав конфиг /usr/local/etc/screenrc:
#Отключаем приветствие startup_message off #Настройка строки состояния caption always "%{gk}%H%{gk} | %c %{gk}%d.%m.%Y | %{gk} %?%-Lw%?%{gk}%n*%f %t%?(%u)%?%{gk}%?%+Lw%? | %{gk} Load: %l %{gk}"