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