Загрузка...
Linux
Новости, статьи, обсуждения, - все что связано с GNU Linux, FreeBSD, OpenBSD, Sun Solaris, Mac OS X и другими системами. Если вы интересуетесь данной темой - добро пожаловать в сообщество.
     

Многопользовательский режим в GNU Screen

27.04.11, 11:19
Автор ggg

Парное программирование - это круто. Но что делать, если напарник находится не рядом, а дома, в другом городе, в другой стране? В своей повседневной практике большую часть времени я пишу код в консольном редакторе Vim, а голос передаю через всем известную IM программу Skype. Как же передать изображение? Настраивать VPN для передачи консоли нецелесообразно, хотя бы потому, что вместо передачи нескольких символов будет передаваться картинка этих символов, а это достаточно ощутимый overhead. Мне кажется, что одним из лучших решений является использование возможностей программы screen.

 

Алгоритм настройки среды парного программирования такой:

  1. один из напарников создает screen сессию на своей машине и разрешает многопользовательский режим
  2. другой напарник подсоединяется к машине первого и "подцепляется" к созданной screen сессии
  3. для передачи звука запускается Skype

Таким образом мы получаем screen-сессию в которой каждый из пользователей видит команды другого, может изменять их и добавлять свои (в зависимости от настроек). Рассмотрим процесс начальной конфигурации.

В дальнейшем считаем что логин локального пользователя localuser, а удаленного - remoteuser.

  1. устанавливаем непосредственно сам screen: sudo apt-get install screen
  2. для того чтобы multiuser режим работал на разных пользователей необходимо выставить suid-флаг на файл /usr/bin/screen (по умолчанию этот флаг отключен для предотвращения проблем безопасности): sudo chmod +s /usr/bin/screen
  3. выставляем правильные права на папку /var/run/screen: sudo chmod 755 /var/run/screen
  4. локальный пользователь запускает screen-сессию и дает ей определенное имя, для удобства использования: screen -S pairprog
  5. включаем многопользовательский режим: CTRL-A :multiuser on
  6. даем права удаленному пользователю на screen-сессию локального пользователя: CTRL-A :acladd remoteuser
  7. удаленный пользователь подключается по протоколу ssh
  8. удаленный пользователь подключается к screen-сессии: screen -x localuser/pairprog
  9. для голосового общения запускается Skype
Некоторые важные моменты, которые стоит учесть:
  1. у всех пользователей подключенных к многопользовательской сессии должен быть одинаковый размер терминала
  2. очень желательно чтобы у всех пользователей были одинаковые настройки темы оформления терминала (цвет фона, цвет текста и т.п.)

Рассмотрим наиболее часто встречающиеся проблемы:

  1. screen Must run suid root for multiuser support - это сообщение означает, что suid флаг на screen не выставлен, необходимо проделать шаги 2 и 3 указанные выше
  2. chmod /dev/pts/xx: Operation not permitted - это сообщение означает что текущий пользователь не владеет консолью. К примеру, если подключиться к удаленной машине с помощью ssh - пользователь будет владеть консолью, если стать другим пользователем с помощью команды su - пользователь не будет владеть консолью
  3. "мало цветов" в screen-е, из-за чего темы оформления в том же vim-е выглядят ужасно. По умолчанию в screen включет 8-битный цвет. Современные терминалы позволяют использовать 256 цветов. Для того, чтобы screen давал возможность использовать все 256 цветов добавляем в файл конфигурации ~/.screenrc следующие строки:

 

attrcolor b ".I"
termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'
defbce on

 

Комментарии

Пробовали, работает – скрин рулит.

Да-а, хорошая штука – screen. Я по началу не прочухал всей прелести, а потом втянулся. =)

ага, особенно когда ssh соединение нестабильное или случайно окно закрыл, а там какой-нибудь важный процесс был, в этом случае screen очень помогает

Ну так я и прочухал screen как раз после того, как несколько раз закрыл окно с этим самым каким-нибудь важным процессом. =)

аноним 23 июля 2012, 14:19
0

Я ниразу случайно не закрывал терминал, по ssh подключаюсь очень редко и ничего важного удалённо не делаю. В screen’е запускаю музыку (mplayer) для управления с клавиатуры из WM и чтобы копировать текст без мышки. Не нравится постоянно тянуться к хвостатой подруге, чтобы скопировать/вставить пару строчек. Screen начал использовать недавно и ещё не все его возможности узнал, но он мне уже нравится.

аноним 23 июля 2012, 15:31
0

лучше попробуй tmux, он как screen, только лучше

Войдите, чтобы оставить комментарий