Покоряй и Властвуй: Советы по работе в терминале. Часть 9 Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
fullcircle:33:советы_ч_9 [2010/06/20 17:07]
создано
fullcircle:33:советы_ч_9 [2010/06/22 19:56] (текущий)
Строка 14: Строка 14:
   - [[..:​32:​советы_ч_8|Советы по работе в терминале - Часть 8]]   - [[..:​32:​советы_ч_8|Советы по работе в терминале - Часть 8]]
   - [[..:​33:​советы_ч_9|Советы по работе в терминале - Часть 9]]   - [[..:​33:​советы_ч_9|Советы по работе в терминале - Часть 9]]
 +  - [[..:​34:​советы_ч_10|Советы по работе в терминале - Часть 10]]
 +  - [[..:​35:​советы_ч_11|Советы по работе в терминале - Часть 11]]
 +  - [[..:​36:​советы_ч_12|Советы по работе в терминале - Часть 12]]
  
 +После вводной статьи прошлого месяца мы готовы перейти к более сложным и вместе с тем более полезным аспектам конфигурации GNU Screen. Я расскажу о некоторых возможностях Screen, которые использую сам и нахожу весьма полезными. Они не так сложны,​ как может показаться на первый взгляд,​ и уж тем более не единственные достойные из всех возможностей Screen. Я буду рад, если вы пришлёте мне примеры ваших настроек этой утилиты. Я могу публиковать их каждый месяц в начале «Покоряй и Властвуй»,​ чтобы мы все могли почерпнуть в них что-то новое. А в этой статье я расскажу о следующих вещах: автозапуск команд в новых окнах, использование Screen через SSH, разделение Screen-сессий между несколькими пользователями,​ разделение области окна и преимущества Screen в качестве локальной консоли. Ну что ж, давайте начнём и заставим работать наши Screen-сессии с файлами .screenrc на полную катушку!
  
 +Если вы просматривали мой конфигурационный файл из прошлого номера,​ вы наверняка обратили внимание на следую-щие две строки в конце файла:
  
 +<​code>#​ автозапуск сессий screen
 +screen -t Zsh 0 /bin/zsh
 +screen -t IRC 1 /​usr/​bin/​irssi</​code>​
 +
 +Эти строки добавляют новое окно Screen с заголовком (значе-ние опции «-t»), указанным номером окна (следующий после заголовка параметр) и командой,​ которая в этом окне запускается. То есть, .screenrc запускает Screen с работающим Z-shell в окне 0, заголовок которого «Zsh», и окном 1 с заголовком «IRC», в котором запущен irssi. Screen делает активным самое новое окно, так что мои сессии всегда начина-ются с IRC, и это как раз то, что мне нужно. Не знаю, есть ли ограничения на количество окон в Screen, но я бы не советовал открывать их больше десяти (по количеству комбина-ций клавиш быстрого вызова). Эта возможность особенно полезна вам, если вы постоянно работаете с несколькими консольными программами (mutt, irssi, midnight commander и другие) и хотите,​ чтобы все программы были легко доступны без открытия множес-тва отдельных терминалов.
 +
 +Возможно,​ при работе через SSH вы сталкивались с проблемой обрыва соединения посреди работы с программой,​ из-за чего вы были вынуждены пере-запустить её заново,​ чтобы досмотреть до конца её вывод. Именно поэтому я считаю,​ что для людей, подключающихся к удалённой машине более чем на минуту и выполняющих там более одной команды,​ жизненно необходимо использовать Screen или другой терминаль-ный мультиплексор. И даже если вы как раз их тех, кто подключается на минутку и запускает только одну команду,​ всё равно Screen будет полезен. Используя Screen через SSH, вы сможете запустить команду,​ отсоединить сессию и отклю-читься от удалённой машины.*Я рекомендую отсоединять сессию до разрыва SSH-соеди-нения,​ но Screen должен сделать это самостоятельно. Потом вы просто снова подклю-чаетесь к удалённой сессии и получаете все данные,​ что программа успела вывести за это время. Это очень полезно для системных администра-торов,​ которым приходится выполнять сценарии обновле-ния прав доступа или что-то подобное,​ так как им больше не нужно отсылать работающий процесс в фоновый режим или всё время держать SSH-соединение открытым. Если мне не изменяет память,​ вы можете настроить автомати-ческий запуск Screen при подключении по SSH, и, таким образом,​ всегда будете работать в Screen.
 +
 +Другой очень удобной воз-можностью Screen является разделение сессий несколькими пользователями. Это полезно в случае,​ если вы редактируете какой-то текст, и вам нужна помощь другого человека. Вы можете разрешить ему подклю-читься по SSH к машине и разделить Screen-сессию с вами. Для этого вы, как хозяин,​ должны сделать следующее:​
 +
 +<​code>​Ctrl+a
 +:multiuser on</​code>​
 +
 +__**Ctrl+a**__ —это комбинация клавиш,​ после нажатия которой нужно написать «:​multiuser on». Также вам понадобится разрешить удалённому пользователю присоединиться к Screen-сессии:​
 +
 +<​code>​Ctrl+a
 +:acladd <​ruser></​code>​
 +
 +Замените <​ruser>​ на имя удалённого пользователя,​ с которым он будет подключаться к Screen. После того, как вы всё сделаете,​ он сможет присоеди-ниться к сессии,​ выполнив следующую команду:​
 +
 +<​code>​screen -x $USER/<​screen ID/​name></​code>​
 +
 +Здесь $USER нужно заменить на имя пользователя хозяина сессии,​ а <Screen ID/name> — на идентификатор или имя нужной сессии. Именованными сессиями легче управлять,​ и я расскажу об этом подробней в конце статьи,​ сразу после той части, в которой обсуждается влияние Screen на надёжность работы в командной оболочке.
 +
 +Последняя возможность программы,​ о которой я собирался рассказать,​ это способность разделять окно Screen надвое. Это значит,​ что вы можете запустить две командные оболочки парал-лельно,​ каждая на своей половине экрана,​ одна над другой. Без дополнительного вмешательства Screen может разделять окна только по горизонтали;​ есть патч, который позволяет включить вертикальное разделение,​ но в этом случае придётся самостоя-тельно собирать Screen из исходных кодов. Чтобы задей-ствовать горизонтальное разделение окна, нажмите следующую комбинацию клавиш:​
 +
 +__**C-a S**__
 +
 +Для тех, кто не читал предыдущей статьи,​ поясню,​ что в данном случае сначала надо нажать Ctrl+a, а затем S (Shift+s). Это приведёт к разделению окна пополам,​ и активное окно займёт нижнюю половину. Между получив-шимися половинами можно переключаться с помощью следующей комбинации:​
 +
 +__**C-a <​Tab>​**__
 +
 +Здесь <Tab> обозначает клавишу табуляции. Для тех, кто хочет задействовать верти-кальное разделение окна, я приведу ссылку на инструкцию в разделе «Читайте также».
 +
 +Последнее,​ о чём я хотел поговорить в этой статье,​ это почему следует использовать Screen вместо TTY или обычного командного интерпретатора. Простой ответ на этот вопрос — личные предпочтения. Более развёрнутый ответ заключается в том, что Screen позволяет организовать многозадачность в рамках одного подключения через SSH, не допуская при этом потери данных из-за разрывов соединения,​ и, в добавок,​ она экономит вам оперативную память. Кроме того, вы сможете гораздо лучше ориентироваться в запущенных программах — если ваши окна запущены в рамках одной Screen-сессии,​ и вы присвоили их заголовки,​ то можно легко получить их список в строке состояния. Я ни в коем случае не говорю,​ что вы обязаны использовать Screen, но тем, кого привлекают возможности программы,​ я горя-чо рекомендую познакомиться с ней поближе и использовать постоянно (чего я, если честно,​ ещё не делаю). Как всегда,​ не стесняйтесь присылать свои вопросы мне на электронную почту lswest34@gmail.com. Туда же присылайте любые предло-жения по новым статьям.
 +
 +Заключительная команда для Screen:
 +
 +<​code>​screen -S <name of screen session></​code>​
 +
 +Эта команда создаёт новую сессию,​ используя заданное опцией -S имя для быстрого и лёгкого доступа (очень полезно,​ когда у вас запущено много Screen-сессий).
 +
 +-----------------------------------
 +=====Читайте также:​=====
 +
 +Вертикальное разделение окон. http://​scie.nti.st/​2008/​8/​22/​gnu-screen-with-vertical-split-support
 +
 +Раздел справочного руководства с официальной страницы проекта,​ посвящён-ный используемым комбина-циям клавиш. http://​www.gnu.org/​software/​screen/​manual/​html_node/​Default-Key-Bindings.html#​Default-Key-Bindings
 +
 +Краткое и лаконичное описание настроек файла .screenrc и Screen в целом. http://​www.math.utah.edu/​docs/​info/​screen_9.html
 +
 +---------------------------------------
 +
 +<style center>
 +//​[[..:​33|К содержанию номера]]//​
 +
 +//​[[:​fullcircle|К архиву журналов]]//​
 +</​style>​
 +
 +{{tag>​Система Администрирование Full_Circle BASH}}