Я искал в Интернете и узнал, что initctl происходит от выскочки.
Эта ошибка - то, что вы получаете от исследования поисковой системой, а не справочной страницей.
На самом деле это имя /run/initctl
. Upstart имеет /sbin/initctl
. Это совершенно разные вещи. Первый - это FIFO, который используется для отправки команд управления процессу № 1. Последний является программным файлом.
Первоначально (клон Linux) System V init
создавал в процессе # 1 во время загрузки FIFO с именем /dev/initctl
. Такие программы, как telinit
работали, открывая этот FIFO и записывая в него сообщения, которые процесс № 1 будет читать и действовать.
Такие системы, как Upstart, finit
Йоахима Нильссона и systemd, предоставляют совместимые прокладки, которые создают FIFO в /dev/initctl
, прослушивают сообщения и переводят команды из концепций System V в эквиваленты finit/Upstart/systemd. Таким образом, инструменты, ожидающие init
программы инициализации System V, могут по-прежнему открывать этот FIFO и записывать ему команды. (Однако не все системы инициализации предоставляют такие прокладки. И если вы спросите людей init
Debian System V они скажут вам , что это плохо документированы внутренний API , что программы , которые не являются частью системы V пучка не должны действительно использовать в первую очередь.)
Тогда, несколько лет назад, в Debian System V init
люди решили , что FIFO собирается перейти от /dev/initctl
к /run/initctl
Поэтому они изменили свой init
чтобы создать его там, и изменили все инструменты, которые идут с его init
- такие как shutdown
, halt
, telinit
и т.д. - чтобы найти его там.
Они только сообщили разработчикам одной из других систем, хотя. Таким образом, когда системы init
отличные от System V, управляют системой, они по-прежнему в основном предоставляют свои совместимые FIFO- файлы в /dev/initctl
. Если init
инструмент инициализации System V с такой системой init
, отличной от System V, инструмент попытается открыть FIFO в новом месте, в то время как система предоставляет его в старом месте.
К настоящему времени обходной путь должен быть очевиден: быстрое символическое соединение делает свое дело.
ln -s /dev/initctl /run/initctl
И это длится до следующей перезагрузки (когда, по-видимому, кто-то перезапустил систему в более разумную конфигурацию, которая не смешивает системы инициализации, и которая попытается создать сам FIFO). Роджер Ли, один из сопровождающих пакета
init
Debian System V, отметил это в 2012 году.
Обратите внимание, что на самом деле совсем не обязательно использовать инструменты init
System V. Отсутствие совместимости с FIMO во многих системах инициализации не так уж важно. systemd, Upstart, nosh и другие системы, как правило, предоставляют свои собственные версии инструментов, таких как halt
, reboot
, telinit
и так далее, в любом случае. Эти инструменты используют собственные протоколы соответствующих систем и не используют initctl
FIFO вообще. Оболочки systemd говорят непосредственно о соответствующих протоколах D-Bus для обработки # 1. Прокладки Upstart генерируют соответствующие события upstart напрямую. Прокладки Ноша посылают соответствующие сигналы непосредственно процессу № 1.
Все это возится в другом ответе, и комментарии сводятся к двум пунктам:
- Если вы загрузитесь с
/bin/bash
как процесс № 1, а не с какой-то реальной системой инициализации, то, конечно , нигде не будет FIFO initctl
. Как уже упоминалось, это система инициализации, которая создает его. Сызнова. На каждом бутстрапе.
- И это система инициализации, которая отвечает на это. Создание FIFO вручную с помощью
mkfifo
волшебным образом не приводит к появлению сервера, который должен прослушивать сообщения в конце чтения FIFO . Вот почему последующие попытки утилит для отправки сообщений по FIFO не работают.
То, как вам удалось привести Debian 7 в состояние, в котором он использует инструменты init
System V, но в то время запускает другую систему инициализации, - это совсем другое дело. Это вполне возможно, особенно когда вы переключаетесь между системами инициализации. В действительности это не все было решено для Debian 7, и есть некоторые странные состояния, в которые может попасть система. В Debian 8 не все гладко и закончено (как есть), даже. К счастью, это был не твой вопрос. ☺
дальнейшее чтение