Глава 7. Запуск и завершение работы Linux

7.1. Введение

Проблема

Существует множество способов запуска и остановки системы Linux. Также не стоит забывать о сценариях инициализации, управляющих запуском различных процессов, и о различных уровнях выполнения системы (runlevels), в каждом из которых может работать свой набор процессов.

Выполните следующую команду:

$ ps axfl

Найдите процесс с номером 1 (вывод сокращён, в вашей системе выходные данные команды будут содержать больше столбцов и строк):

UID  PID  PPID  STAT  TTY  TIME  COMMAND
0    1    0     S     ?    0:03  init

Это init, предок всех процессов в системе Linux. Обратите внимание: идентификатор родительского процесса PPID (Parent Process ID) равен 0, потому что init является первым процессом, стартующим после запуска ядра.

Решение

Процесс загрузки Linux проходит примерно так:

В Slackware процедура запуска ближе к BSD: система использует один каталог /etc/rc.d, где находится сценарий init для каждого уровня выполнения. Впрочем, в ней также присутствуют аспекты SysV.

В Red Hat и Debian каталоги /etc/rc*.d содержат символические ссылки на сценарии в /etc/init.d. Создание ссылок предотвращает излишнее дублирование. Имена ссылок определяют способ запуска служб. Например:

$ ls -go S20cupsys
lrwxrwxrwx 1 16 Sep 9 17:51 S20cupsys -> ../init.d/cupsys

Префикс S20 означает, что служба cupsys должна запускаться с приоритетом 20. Чем ниже значение, тем выше приоритет. Запись K20cupsys указывает, что служба должна быть остановлена.

Комментарий

Уровни выполнения Linux делятся на несколько стандартных категорий. Вот их общепринятая схема:

В Red Hat уровни выполнения отличаются тем, что 2 и 4 не используются. В Slackware уровень 4 является многопользовательским графическим режимом, а уровни 5 и 2 не используются.

Уровни 7-9 теоретически существуют, но на практике редко применяются. Чтобы узнать, что происходит на каждом уровне, просмотрите содержимое каталогов rc*.d.

См. также

ps(1), init(8), inittab(5), загрузочные сценарии /etc/init.d, каталоги /etc/rc*.d.