Введение в Unix

Подключение терминалов


Все терминалы, которые могут быть подключены к системе, должны быть описаны в специальном файле, который имеет имя /etc/ttys (версия 7) или /etc/inittab.

Каждому терминалу соответствует одна строка файла. Форматы этих файлов сходны в том, что первый символ является цифрой, нулевое значение которой соответствует отключенному (логически) терминалу, а единичное - подключенному терминалу. Кроме того, формат обоих файлов предусматривает наличие имени спецфайла, соответствующего терминалу (второе поле в /etc/inittab).

Типичная строка в /etc/inittab имеет вид (пример):

1:t3:c:/etc/getty tty13 H 0

Первое поле имеет подполя, разделенные двоеточием.

При загрузке системы последним шагом загрузки является запуск начального процесса с номером 1, выполняющего команду /etc/init.

Команда init перед выполнением системного стартового командного файла /etc/rc просматривает файл etc/inittab. Для каждой строки этого файла, начинающейся с ненулевого символа, совпадающего с состоянием начального процесса (при запуске равного единице), команда init порождает второй процесс в цепочке (init-getti-login-shell). Порожденный процесс выполняет команду, указанную в четвертом подполе первого поля файла /etc/inittab (в данном примере /etc/getty).

Команда getty выдает на терминал, указанный именем спецфайла во втором поле файла /etc/inittab, содержимое файла /etc/issue, если он существует, и вслед за этим выводит на терминал текст подсказки из записи файла /etc/gettydefs, содержащем характеристики терминала (обычно login:). Затем getty читает имя пользователя и вызывает команду login, передавая ей имя пользователя в качестве параметра.

Команда login вводит пароль пользователя и после успешной проверки пароля выполняет команду из последнего поля записи данного пользователя в файле /etc/passwd (обычно /bin/sh или bin/csh), а также устанавливает в качестве текущего начальный каталог пользователя, указанный в предпоследнем поле записи данного пользователя в файле /etc/passwd.

Команда sh или csh командного интерпретатора выполняет стартовые файлы с предопределенными именами (.profile для sh; .cshrc и .login для csh), выводит подсказку и ждет ввода очередной команды пользователя.

По окончании сеанса (подачей команды logout или ^D), а также в случае неверного пароля управление возвращается в команду getty, которая перезапускается повторно, если в третьем подполе первого поля записи файла /etc/inittab для данного терминала стоит символ с (continually); если же в этом поле стоит пробел, то команда getty завершается.



Содержание раздела