Только одна система инициализации может быть активной одновременно. 16 апреля это systemd.
Ряд пакетов поставляется с файлами для нескольких систем инициализации, поэтому ими можно управлять с нескольких систем инициализации в разных ОС. В Ubuntu иногда устанавливаются сценарии для нескольких систем инициализации, хотя они не все используются одновременно.
Новые системы инициализации пытаются поддерживать совместимость со старыми. В частности, systemd пытается поддерживать совместимость как с сценариями инициализации Upstart, так и с SysV.
В случае сценария «init.d», который вы упомянули, это сценарий инициализации «SysV», а не сценарий Upstart. Кроме того, сценарии инициализации «SysV» будут запускаться только при загрузке, если они будут связаны с каталогом, подобным «/etc/rc5.d». Вы обнаружите, что в Network Manager не установлена символическая ссылка.
Чтобы понять, как systemd
управлять старыми сценариями инициализации "SysV", смотрите раздел Как systemd использует /etc/init.d scirpts? ,
Теперь, чтобы ответить на вопрос о том, почему работает перезагрузка Network Manager с помощью «service network-manager restart». Команда service
используется как со сценариями Upstart, так и со сценариями инициализации SysV, предпочитая первые. Network Manager также имеет сценарий Upstart, установленный 16.04 в /etc/init/network-manager.conf
.
Если вы просмотрите результаты sudo strace service network-manager restart
, вы сможете понять, что происходит. Во-первых, вывод показывает, что systemctl
вызывается, указывая, что команда перенаправляется в systemd. Во-первых, вскоре после его открытия /usr/bin/service
вы можете увидеть, что он начинает читать в файле как скрипт оболочки:
open("/usr/sbin/service", O_RDONLY) = 3
...
read(10, "#!/bin/sh\n\n#####################"..., 8192) = 8192
Теперь, когда мы знаем, что service
это скрипт оболочки, мы можем проверить его исходный код. В исходном коде мы обнаруживаем, что is_systemd
обнаружено и установлено. Для случая systemd вы можете видеть, что команда переписана так, чтобы быть systemctl restart network-manager
.
Таким образом, в то время как три системы инициализации сосуществуют и имеют некоторую совместимость, существуют уровни сложности. Чтобы свести к минимуму сложность происходящего в будущем, лучше всего использовать файлы модулей systemd и systemctl
инструмент для управления службами.