SCREEN - полноэкранный и достаточно мощный консольный оконный менеджер с поддержкой скроллинга и поиска в окне и функцией копирования-вставки между ними. Наиболее интересная функция данного менеджера заключается в том что Вы можете в любой момент отсоединиться от своего screen`a и закрыть сеанс работы в шеле. После этого Вы можете присоединившись к screen`у вновь продолжить свою работу с того места где Вы остановились.
Конфигурационный файл .screenrc. Все опции можно изменить во время работы. Для этого нажмите Ctrl+a : и введите название параметра и его значение.
Разберем некоторые директивы:
vbell off - управляет визуальным звонком. Если данный параметр будет включен (on) то звонок будет отображаться как вспышка на экране. activity 'activity in window %n' - сообщение которое будет выводиться при включенном режиме мониторинга за окном. Полезно если Вы ждете какого либо действия в окне. bell_msg 'bell in window %n' - сообщение которое выведется на Ваш экран в случае получения screen`ом звукового сигнала в каком либо окне. nethack on - изменяет стиль текста выводимых сообщений на стиль знаменитой игрушки NetHack. Почувствуйте себя в подземельях... ;) autodetach on - если по какой то причине соединение с управляющим процессом будет потеряно, то после востановления работа в screen может быть возобновлена. В обратном случае (off) - screen будет уничтожен со всеми дочерними окнами и процессами. startup_message off - выключает сообщение об авторских правах при первом запуске screen`а. defscrollback 10000 - количество строк по умолчанию для буфера прокрутки. caption always - показывает заголовки окна в строке статуса. caption string "%{rk} %c %{dd} %{+b M}%n %{-b dd}%-w%{+b B.}%n* %t%{-}%+w%<" - форматирование строки статуса. Данный набор символов приведет к тому что в строке статуса будет отображаться время и цветом выделяться активное окно.
После запуска screen создаст одно окно с Вашим шелом. В последствии вы сможете создать дополнительные окна. Все нажатия клавиш передаются текущей программе в окне. Ограничение накладывается только на управляющую последовательность самого менеджера. Данная последовательность Ctrl+a. Для того что бы передать приложению данную последовательность Вам нужно нажать Ctrl+a и сразу a. В остальном - абсолютно никаких ограничений. Единственно что тип терминала должен быть VT100 совместим для правильной передачи нажатий при удаленной работе. Тип терминала передаваемый приложению в окне screen - так и называться screen. Если Ваше приложение не поддерживает данный тип - его всегда можно изменить путем изменения переменной TERM.
Краткая сводка комбинаций клавиш при работе
Ctrl+a c (create) - создания нового окна; Ctrl+a a - переключения между окнами; Ctrl+a <НОМЕР> - выбор окна по номеру. Ctrl+a (p|n) - циклическое перемещение между окнами. p - prev, n - next. Ctrl+a " - список окон для переключения. Ctrl+a A - изменить заголовок окна. Аналогично вводу команды title при нажатии Ctrl+a Ctrl+a C - очистить окно. Ctrl+a F - подогнать размер окна под текущий размер терминала. Ctrl+a H - протоколирование окна в файл screenlog.<НОМЕР ОКНА>Ctrl+a K - уничтожить окно. Ctrl+a M - режим слежения за активностью в окне. Если в момент этого вы находитесь в другом окне - в подсказке будет выведено:activity in window <НОМЕР ОКНА>Ctrl+a r - переключение режима переноса по словам. (wrap) Ctrl+a S - очень интересный режим работы. Сплит. То-есть текущее окно разделяется на две части и в обоих можно открыть по новому окну. Переключение между окнами Ctrl+a; TAB, выход из режима сплит - Ctrl+a Q. Ctrl+a d - отключится от активного screen'а Ctrl+a ? - помощь Ctrl+a Esc - режим скроллинга. Он же режим копирования. Для копирования подведите курсор к нужному месту и нажмите пробел. Ctrl+a ] - Вставка выделенной области. Ctrl+a x - Запереть менеджер. При вкомпиленной поддержке PAM - для разблокировки нужно ввести пароль пользователя от которого запущен менеджер. В обратном случае пароль для разблокировки будет запрошен при блокировании.
Часто применяемые опции командной строки.
rd - подключиться к screen. Сделать deatach для остальных сессий. list/-ls - список запущенных менеджеров. dm - запуск screen в режиме deatach. Полезно для init скриптов или скриптов вообще. wipe - удалить сведения о запущенных менеджерах. Полезно в случае потери менеджера, но сохранения информации о нем. x - присоединиться к screen. Присоединение осуществляется даже в случае существующих соединений. Полезно при работе с одним screen из разных окружений. Например один screen и на X и на консоль.
Для примера берём задачу, скачать iso-шку CentOS 4. Далее будет понятнее если показать выкладки из шела.
[Браузер 0pera@srv /]# screen
[Браузер 0pera@srv /]# wget http://mirror.yandex.ru/ centos/4.6/isos/i386/ CentOS-4.6-i386-binDVD.iso
--23:04:52-- http://mirror.yandex.ru/ centos/4.6/isos/i386/ CentOS-4.6-i386-binDVD.iso
Распознаётся mirror.yandex.ru... 77.88.19.68, 87.250.239.69
Устанавливается соединение с mirror.yandex.ru|77.88.19.68|:80... соединение установлено.
Запрос HTTP послан, ожидается ответ... 200 OK
Длина: 2414774272 (2,2G) [application/x-iso9660-image]
Saving to: ` CentOS-4.6-i386-binDVD.iso'
теперь, для того чтобы отключиться от экрана, нажимаем Ctrl+A затем d
[detached]
[Браузер 0pera@srv /]#
можем закрыть ssh сессию простым Ctrl+D или набрав logout в консоли. Через какое-то время, хотим проверить, как там наша закачка. Соединяемся по ssh с сервером и соединяемся с сессией screen
[Браузер 0pera@srv /]# screen -ls
There is a screen on:
20673.pts-0.srv (Detached)
1 Socket in /var/run/screen/S-Браузер 0pera.
[Браузер 0pera@srv /]# screen -r 20673.pts-0.srv