Настройка и работа в Linux




Исследуем процессы Часть Демон init - часть 6


до: ttySv none network

Ни один из них по-умолчанию не активирован.

Даже если вы стали суперпользователем для того что бы отредактировать файл /etc/ttys, вы все равно не должны забывать послать процессу init сигнал HUP, для того что бы он воспринял внесенные изменения. Для того что бы сделать это, напишите: kill -1 1

где -1 это числовое обозначение сигнала HUP, а 1 – номер процесса init.

Теперь давайте выясним, что это за программа getty, которая присутствует в файле /etc/ttys. Описание взятое из страницы руководства (man 8 getty) дает нам полную картину: DESCRIPTION

The getty program is called by init(8) to open and initialize the tty line, read a login name, and invoke login(1).

ОПИСАНИЕ Программа getty вызывается процессом init для того что бы открыть и инициализировать терминальный канал, прочитать имя пользователя и вызвать программу login.

Таким образом init читает /etc/ttys и запускает программу getty на каждом терминале указанном в конфигурационном файле. Задачей getty является постоянный мониторинг терминала на наличие попыток войти в систему. Если кто-нибудь это делает, getty запускает программу login, для того что бы проверить имя пользователя и пароль (getty считывает имя пользователя, а пароль считывает login – прим. переводчика). Если проверка прошла успешно, то login запускает указанный в профиле пользователя интерпретатор команд и помещает пользователя в его домашний каталог. Как только пользователю становится доступен интерпретатор команд, он может взаимодействовать с операционной системой. Теперь только интерпретатор команд разбирает команды пользователя, а так же обеспечивает запуск необходимых программ.

Когда пользователь покидает свой интерпретатор команд, init немедленно запускает новую копию getty, которая продолжает отслеживать попытки входа в систему.

Попробуем связать воедино весь этот процесс, глядя на вывод команды ps в свежее загруженной, установленной по-умолчанию FreeBSD 4.1. Я использовал ключи -ax для того что бы включить в вывод системных демонов: ps -ax PID TT STAT TIME COMMAND 0 ?? DLs 0:00.01 (swapper) 1 ?? ILs 0:00.16 /sbin/init -- 2 ?? DL 0:00.02 (pagedaemon) 3 ?? DL 0:00.00 (vmdaemon) 4 ?? DL 0:00.02 (bufdaemon) 5 ?? DL 0:01.02 (syncer) 1056 ?? Is 0:00.00 adjkerntz -i 1187 ?? Ss 0:00.08 syslogd -s 1206 ?? Is 0:00.05 inetd -wW 1208 ?? Is 0:00.11 cron 1622 ?? Ss 0:00.02 sendmail: accepting connections on port 25 (sendmail) 1621 v0 Ss 0:00.12 -csh (csh) 1701 v0 R+ 0:00.00 ps -ax 1699 v1 Is+ 0:00.01 /usr/libexec/getty Pc ttyv1 1619 v2 Is+ 0:00.01 /usr/libexec/getty Pc ttyv2 1618 v3 Is+ 0:00.01 /usr/libexec/getty Pc ttyv3 1617 v4 Is+ 0:00.01 /usr/libexec/getty Pc ttyv4 1616 v5 Is+ 0:00.01 /usr/libexec/getty Pc ttyv5 1615 v6 Is+ 0:00.01 /usr/libexec/getty Pc ttyv6 1614 v7 Is+ 0:00.01 /usr/libexec/getty Pc ttyv7

Теперь вы должны узнать большинство этих процессов: swapper имеет PID=0, а init – PID=1. Процессы adjkerntz, syslogd, inetd, cron и sendmail были успешно запущены сценарием rc. Что бы выполнить команду ps, мне был необходим интерпретатор команд, в моем случае это был C-shell, запущенный на ttyv0. Процессы getty ожидают входа пользователей на виртуальных терминалах 1-7. На виртуальном терминале номер 8 getty не запущен, поскольку этот терминал отключен в файле /etc/ttys.

В трех частях этой статьи нам удалось достаточно глубоко забраться во внутренности FreeBSD. (Что бы разбудить интерес к собственным исследованиям – прим. переводчика).

Вниманию вебмастеров: использование данной статьи возможно только в соответствии
с правилами использования материалов сайта «Софтерра» (http://www.softerra.ru/site/rules/)




Содержание  Назад  Вперед