ГЛАВА 8 УПРАВЛЕНИЕ ТЕРМИНАЛАМИ СОДЕРЖАНИЕ ВВЕДЕНИЕ 00 Определения терминов ТЕРМИНАЛЬНАЯ СИСТЕМА Как работает терминальная система Как проверить характеристики линии Установка новых характеристик линии и последовательности поиска Изменение характеристик терминальной линии Установка параметров терминала ВВЕДЕНИЕ Эта глава охватывает следующие темы : термины, употребляемые при описании управления терминалами работа терминальной системы проверка характеристик линии установка новых характеристик линии и последовательности по- иска изменение характеристик терминальной линии установка режимов работы терминала Определение терминов В этой главе используются следующие термины: терминал(TTY) Этот термин охватывает целую область доступа между системой UNIX и периферийными устрой- ствами, включая пульт управления системой. Аббревиатура TTY появляется в командах get- ty(1M) и stty(1), в именах специальных фай- лов, например, /dev/tty01, и в именах фай- лов, таких как /etc/gettydefs, используемых командой getty. линия связи терминала Физическое устройство, через которое осу- ществляется доступ к компьютеру. порт Синоним для линии связи скорость передачи данных Скорость, с которой данные передаются по ли- нии, одна из характеристик линии. режим Характеристики интерфейса терминала. Также являются характеристиками линии. Линия связи и терминал должны работать в одном и том же режиме перед тем, как они будут соединены. Описано в termio(7). последовательность поиска Циклические серии характеристик терминала, такие, например, как различные скорости пе- редачи данных. Во время входа в систему пользователь в целях достижения совместимос- ти с компьютером может менять режимы, нажи- мая BREAK. параметры терминала Характеристики, определяющие как работает данный терминал. Описаны в termio(7). ТЕРМИНАЛЬНАЯ СИСТЕМА В следующих разделах этой главы описано, как действует терми- нальная система и как можно управлять ею. Как работает терминальная система Серии из четырех процессов (init(1M), getty(1M), login(1), sh(1)) соединяют пользователя с системой UNIX. init - это ос- новной порождающий процесс, который инициируется после послед- него шага процедуры загрузки. Согласно инструкциям в /etc/init- tab он порождает процесс getty для каждой терминальной линии, с которой пользователь может войти в систему. Команда getty долж- на быть с аргументом line. Каждый такой аргумент - это имя спе- циального файла в каталоге /dev. Для информации о других аргу- ментах, используемых с getty см. Справочник системного адми- нистратора. Попытки пользователя установить связь порождают запрос, который направляется команде getty для использования в качестве аргу- мента файла из каталога /dev. getty отвечает выдачей данных из файла /etc/gettydefs. Данные файла gettydefs используются в за- висимости от аргумента - speed, используемого с командой get- ty.(В синтаксисе команды getty(1М) имя аргумента speed, но на самом деле это указатель на поле метки в файле gettydefs). Сре- ди полей в записях файла gettydefs встречаются приглашения lo- gin (см. далее в этой главе). При получении приглашения login :, пользователь вводит свое входное имя. getty вызывает login, используя входное имя в ка- честве аргумента. login выдает приглашение для пароля, проверя- ет ответ пользователя, и если пароль верен, вызывает shell для пользователя, как описано в /etc/passwd. Если shell не указан, то по умолчанию вызывается файл /bin/sh. login также выполняет /etc/profile . /bin/sh выполняет .profile пользователя, если он существует. .profile часто содержит команды stty, которые устанавливают па- раметры терминала, отличающиеся от используемых по умолчанию. Теперь связь между пользователем и системой UNIX установлена. Как проверить характеристики линии Есть два способа проверить характеристики линии связи. 1. Использовать команду sysadm lineset(1) из Меню управле- ния системой. sysadm lineset сначала показывает весь диапазон характеристик линии, а затем дает возможность изучить каждую строку (см. процедуру 8.1). 2. Просмотреть файл /etc/gettydefs. Файл /etc/gettydefs содержит информацию, используемую командой getty(1M) для установки скорости и характеристик терминала при включении в линию. Формат файла gettydefs в общем виде следую- щий: метка#начальные признаки#конечные признаки#метка следующего Ниже показаны несколько строк из файла gettydef 19200# B19200 HUPCL # B19200 SANE IXANY TAB3 HUCL # login: #9600 9600# B9600 HUPCL # B9600 SANE IXANY TAB3 HUPCL # login: #4800 4800# B4800 HUPCL # B4800 SANE IXANY TAB3 HUPCL # login: #2400 2400# B2400 HUPCL # B2400 SANE IXANY TAB3 HUPCL # login: #1200 2400# B2400 HUPCL # B2400 SANE IXANY TAB3 HUPCL # login: #1200 Приведенные строки составляют одну циклическую последователь- ность поиска; последнее поле каждой строки - это метка следую- щей строки. Поле "метка следующего" последней строки указывает на первую строку последовательности. Цель задания последова- тельности характеристик в том, чтобы связать весь диапазон ско- ростей. Если вместо приглашения login: Вы получили бессмыслен- ный набор символов, то нажатие клавиши BREAK указывает команде getty на необходимость перейти к следующей строке в последова- тельности. Поиск продолжается, пока скорость, с которой работа- ет линия, не совпадет со скоростью терминала пользователя. По- казанные поля признаков имеют следующий смысл: B300-B19200 Скорость передачи информации линии. HUPCL Отключение от линии. SANE Признак, означающий установку стандартных характеристик. IXANY Позволяет возобновлять вывод любым симво- лом. Если не указан, то только CTL-Q мо- жет возобновить вывод. TAB3 Посылает символы табуляции на терминал в виде пробелов. Описание всех признаков команды getty находится в termio(7). Установка новых характеристик линии и последовательности поиска Есть два способа сделать это. 1. Использовать меню администратора - подкоманду sysadm mkli- neset(1). sysadm mklineset выдает серию приглашений. Ваши ответы дают информацию для новых записей файла gettydefs (см. процедуру 8.2). 2. Использовать редакторы ed(1) или vi(1) для редактирования файла gettydefs. Введите новые строки в файл gettydefs (см. пример, приведенный выше). После каждой строки в файле должна идти пустая строка. После завершения редак- тирования введите команду: # /etc/getty -c /etc/gettydefs Это вызовет просмотр командой getty файла и выдачи результатов на терминал. Если будут найдены невер- ные данные или какие-либо ошибки, то об этом будет сообщено. Изменение характеристик терминальной линии Существует два способа сделать это. 1. Использовать подкоманду sysadm modtty(1) меню администра- тора. Она выдает серию приглашений. Ваши ответы вносятся в данные в /etc/inittab (см. процедуру 8.3). 2. Использовать редакторы ed(1) или vi(1) для редактирования файла /etc/inittab. Файл /etc/inittab содержит инструкции для команды /etc/ init(1M). Общий вид строки данных в файле /etc/inittab следую- щий: идентификатор:уровень:действие:процесс Эти четыре разделенные двоеточиями поля имеют следующие значе- ния. идентификатор Уникальное одно- или двухсимвольное имя для строки данных. уровень Указывает уровень выполнения. действие Определяет, как команда /etc/init будет тракто- вать поле процесса (см. inittab(4) для более полной информации). процесс Команда shell'а, которую необходимо выполнить. Файл /etc/inittab содержит несколько строк, которые порождают процессы getty. Ниже приведен пример таких строк, выделенных с помощью команды grep из файла /etc/inittab. co:1234:respaw:/etc/getty console console ct:2:off:/etc/getty conty conty;#line not in use 21:2:respawn:/etc/getty tty21 9600 22:2:respawn:/etc/getty tty22 9600 23:2:respawn:/etc/getty tty23 9600 24:2:off:/etc/getty tty24 9600;#line not in use 25:2:off:/etc/getty tty25 9600;#line not in use Есть по крайней мере три действия, которые можно сделать с даннными файла inittab : 1. Изменить поле действие. К терминальным линиям применяется два вида действий - это "respawn" (возобновить) и "off" (отменить) (см. inittab(4) для более полной информации об этом). 2. Добавить или изменить аргументы в поле процесс. Часто ис- пользуется аргумент -tnn. Он указывает getty, что нужно отключиться от линии, если в течение nn секунд не посту- пит никаких сообщений. Рекомендуется использовать аргу- мент -t при работе с телефонными линиями. 3. Добавить или изменить комментарии. Комментарии помещаются после точки с запятой (;), которая завершает команду, и знака #, который открывает комментарий. Установка параметров терминала Терминальная система, как было описано выше, определяет основ- ной характер общения между терминалом пользователя и системой UNIX. При успешном входе в систему желательно, чтобы нужные па- раметры терминала устанавливались по умолчанию. Команда stty(1) используется для изменения параметров термина- ла. Многие пользователи добавляют команду stty в свой .profile, чтобы нужные им параметры устанавливались автоматически во вре- мя процедуры входа. Вот пример простой команды stty: $ stty cr0 nl0 echoe -tabs erase ^H cr0 nl0 Не делать задержки при возврате каретки или пере- воде строки. Задержка не используется для видео- дисплеев, однако, бывает нужна при работе печатаю- щих терминалов, чтобы дать возможность продвинуть ся механическим частям устройства. echoe Стирать символы при нажатии BACKSPACE. -tabs При печати интерпретировать символы табуляции как пробелы. erase ^H Изменить символ стирания символов на ^H. По умол- чанию таким символом является #. Большинство тер- миналов выдает ^H при нажатии BACKSPACE. Определе- ние этого параметра дает возможность использовать клавишу BACKSPACE.