screen – консольный оконный менеджер

Автор: | 05/06/2013

terminalОсновная задача утилиты SCREEN– возможность запуска нескольких сессий одновременно в рамках одной. Наиболее важной её возможностью является возможность сохранения и поддержки текущей сессии даже при закрытии основного управляющего окна на стороне пользователя.

Установка.

FreeBSD:

# cd /usr/ports/sysutils/screen/ && make BATCH=yes install clean

Debian/Ubuntu:

# aptitude -y install screen

CentOS/RHEL:

# yum -y install screen

Запускаем:

$ screen

При первом запуске внешний вид довольно малоинформативен и неудобен – выглядит как обычная консоль. Исправить это можно с помощью файла .screenrc, размещённого в домашнем каталоге пользователя.

Для примера – существующий файл, используемый давно и многими пользователями/администраторами:

08:39:19 [root@akira /usr/home/setevoy] # ls -la | grep screen
-rw-rw-r–   1 setevoy  setevoy       634 Jul 22  2012 .screenrc

В файл добавляем следующие строки:

# cat .screenrc
caption always ‘ %{-b dd}%-w%{cd}%n* %t%{-}%+w %{cd}%-=(%l) %d/%m %c%{-} ‘

startup_message off
autodetach on

altscreen on
shelltitle “$ |bash”
nonblock on

vbell off
vbell_msg ”   Wuff  —-  Wuff!! %n ”
bell_msg “bell in %n (%t) [%w:%s]~”
activity “activity in %n (%t) [%w:%s]~”

defmonitor on
defscrollback 10000

crlf off

bind + resize +3
bind – resize -1

bind k
bind ^k
bind .
bind ^
bind
bind ^h
bind h
them better
bind ‘K’ kill
bind ‘I’ login on
bind ‘O’ login off
bind ‘}’ history

msgwait 15
silencewait 30

hardstatus alwayslastline “%{= kw}[ %{= kb}%H%{= kw} ][ %{r}%l%{w} ]%{w}[%{r} %d/%m/%y %C %A %{w}]%{w}”

После применения этого файла – картинка в консоли кардинально изменится:

screen1

В самом нижнем ряду отображаются:

[имя_хоста][показатели load avarage][текущие дата и время]

Чуть выше располагается список активных сессий с их названиями и номерами:

0* htop  1 update  2 bash  3 bash  4 bash

Для повтороного запуска screen со всеми сессиями – наберите:

$ screen -r

Что бы сессии сохранились – не выходите из screen при завершении работы в терминале, а просто закройте само окно.

Еесли вы оставили активное окно терминала на одном компьютере, а хотите восстановить сессию на другом при вводе screen -r получите сообщение об ошибке:

$ screen -r
There is a screen on:
15702.pts-0.akira       (Attached)
There is no screen to be resumed.

Что бы “убить” активную сессию и запустить её в новом терминале – выполните:

$ screen -rD

Можно не “убивать”, а подключиться к запущенной сессии.

Посмотреть список активных сессий можно командой:

$ screen -ls
There is a screen on:
15702.pts-0.akira       (Attached)
1 Socket in /tmp/screens/S-setevoy.

Что бы подключиться к ней – выполните:

$ screen -x 15702

Таким образом, в двух различных терминалах на двух разных машинах можно одновременно работать в одной и той же консоли.

Навигация между сессиями в пределах одной консоли с запущенным screen выполняется комбинацией Ctrl+a+*, где * – номер требуемой сессии. Обратите внимание – команды для screen чувствительны к регистру. Так же, можно перемещаться между разными сессиями комбинациями Ctrl+a+n (вправо по списку) или Ctrl+a+p (влево).

Например, что бы переименовать активную сессию – нажмите комбинацию Ctrl+a+Shift+a, т.е. – Ctrl+a+A.

Для запуска ещё одной копии консоли – наберите комбинацию Ctrl+a+c.

Ссылки по теме:

http://citkit.ru

http://www.xgu.ru

http://hlabs.org

svn checkout svn://svn.freebsd.org/base/releng/9.1/ /usr/ports