init
— условное название программы, которая выполняется в процессе #1. За прошедшие годы она приняла множество форм, и задачи, которые init
выполняла программа, значительно изменились. Как ни странно, это также имя команды, которую администраторы используют для связи с процессом #1. Их лучше всего рассматривать как две отдельные вещи, и они, безусловно, были задокументированы таким образом в AT&T Unix, даже если они смешаны в некоторых программах. в одной программе, которая ведет себя по-разному в зависимости от того, какой идентификатор процесса она находит. Еще больше сбивает с толку то, что процесс #1 может запускать несколько разных программ за время существования системы, по крайней мере две из которых (в случае систем Linux с initramfs )названыinit
(/init
в initramfs и /sbin/init
в окончательной корневой файловой системе, условно привязав -к первому ).
Менеджер служб — это программа, которая управляет службами, как следует из названия. Его не обязательно запускать как процесс #1, и на самом деле, в широком спектре программного обеспечения операционных систем на протяжении многих лет вообще не был процессом #1. Менеджеры служб варьируются отrunsv
Геррита Пейпа черезs6-supervise
Лорана Берко к образно названномуservice-manager
в моем нош-туосете. Они также охватывают средство доступа к службам AT&T Unix System 5 Release 4, контроллер системных ресурсов IBM AIX 3.1 и средство управления службами Solaris. Они порождают сервисные программы из единого, непротиворечивого, известного контекста.и обеспечить механизмы для управления этими службами (, запуска, прекращения и перезапуска, а также отключения )и их состояния для запроса остальной частью системы.
Администратор системы представляет собой программу, которая управляет системой, занимаясь изменениями состояния системы. Обычно он запускается как процесс #1. Отчасти это связано с тем, что ядро операционной системы обрабатывает его особым образом, отправляя ему информацию о запросах на изменение состояния системы, таких как события сбоя питания или специальные аккорды клавиш. на клавиатуре виртуального терминала ядра (s )(, например в Linux & #x21ee; + ↑ генерируя SIGWINCH
или & #x2388; + и #x2387; + и #x2326; создание SIGINT
для обработки #1 ). Он также имеет дело с настройкой начального состояния системы при начальной загрузке, а иногда и с завершением состояния системы при завершении работы.
Подробная информация о состоянии системы зависит от программного обеспечения. Ван Смуренбург init
действовал на уровне (, ныне устаревшем ), пробеге -. Конечный автомат BSD init
является полностью внутренним и имеет такие состояния, как работающий /etc/rc
, многопользовательский -пользовательский и однопользовательский .
Тематические исследования:
systemd
это процесс #1 программа. Он выполняет как управление службами, так и управление системой в одной программе, работающей как этот процесс. Однако это не касается завершения состояния системы, а вместо этого загружает процесс #1 в другую программу с именем systemd-shutdown
. Изменения состояния системы обычно принимают форму запуска/остановки диспетчером служб целей , которые, в свою очередь, вызывают запуск/остановку служб . Некоторые сервисы, такие как emergency.service
и systemd-halt.service
, например, при активации сами запускают systemctl
, который отправляет команды обратно процессу #1,для внесения дальнейших изменений состояния системы. В этой схеме завершение работы представляет собой последовательность из двух -состояний. system-manager
в моем наборе нош-туалов — это программа процесса #1, которая выполняет только роль системного администратора. Он выполняет инициализацию при начальной загрузке и финализацию при завершении работы. Он управляет системой, порождая (общесистемный -системный )диспетчер служб в качестве другого процесса и различные вызовы программыsystem-control
в ответ на события. (SIGINT
, являющийся результатом и #x2388; + и #x2387; + и #x2326; Например, аккорд на клавиатуре KVT вызывает запуск дочернего процесса system-control start secure-attention-key
.)system-control
выдает команды диспетчеру служб для запуска и остановки служб и целей. Точно так же несколько служб/целей вызывают system-control
для отправки команд обратно системному менеджеру, чтобы после их активации запрашивались дальнейшие изменения состояния системы. Сервисные процессы являются внуками процесса #1. runit
— это программа процесса #1, которая также занимается только управлением системой. Он порождает диспетчер служб, как и другие процессы. Это делается на том, что люди runit называют «стадией 2», путем вызова сценария оболочки, который, в свою очередь, загружает по цепочке runsvdir
, что, в свою очередь, порождает несколько программ runsv
как дочерние процессы процесса #. 1. Сервисные процессы великолепны. -внуки процесса #1. Управление системой использует подход «просто запустите три сценария оболочки», запускаемый комбинацией сигналов и файлов флагов. init
была программой процесса #1, которая выполняла только управление системой. У него были вышеупомянутые уровни выполнения -в качестве состояний системы, и теоретически он также мог быть диспетчером служб. На самом деле его возможности управления службами были настолько бедны, что через несколько лет они даже больше не использовались для управления службами входа в систему TUI.Он породил (гораздо более функциональные )диспетчеры служб в качестве дочерних процессов в формах вышеупомянутых SAF и SRC. К 1990 году количество используемых уровней выполнения -сократилось до 1, в результате чего практически такая же конструкция в реальной эксплуатации была реализована в Nosh system-manager
все эти десятилетия спустя, а процесс #1 в значительной степени просто порождал службу. дочерний процесс менеджера и дополнительные дочерние процессы для запуска команд в ответ на события ядра и команды администратора. Сервисные процессы являются пра-внуками процесса #1, пра-потомками и потомками различных процессов менеджера служб. (Процесс службы входа в систему TUI порождается процессом ttymon
, который сам порождается процессом sac
, порожденным, например, процессом #1.)
init
похожа на System 3 init
и System 5 init
за несколько лет до появления вышеупомянутых менеджеров служб в Unix. Это процесс #1, программа, выполняющая роль системного менеджера, а также управляющая некоторыми службами (, хотя и с тем же недостаточным качеством, не позволяющая точно контролировать запуск/остановку отдельных служб, как Система 5init
). Управление службами, если оно вообще выполняется (, вместо того, чтобы просто отделять сервисные программы и в значительной степени забывать о них ), осуществляется другими программами в дочерних процессах. В отличие от systemd
и набора инструментов nosh system-manager
, он оставляет некоторые действия по управлению системой программам, работающим в дочерних процессах. Принимая во внимание, что и systemd
, и system-manager
выполняют последний акт выключения/перезагрузки/остановки системы (, выполняя соответствующий системный вызов ядра )в процессе #1 (, хотя и в другой программе в systemd В случае )в системе ван Смуренбурга они выполняются в дочерних процессах, вызываемых через rc
.Например, :Последний системный вызов, приводящий к остановке системы, выполняется с помощью halt
сценария оболочки, запускаемого как дочерний процесс rc
(, который сам является дочерним процессом #1 ), который в свою очередь запускает halt
программу(как пра-внука процесса #1 ), который фактически выполняет системный вызов.
/etc/inittab
осталось в прошлом.. Часто задаваемые ответы. getty
, порожденный init
, ушел в прошлое.. Часто задаваемые ответы. Это не будет работать в /bin/sh
, переключитесь на /bin/bash
и должно.