最近遇到一个问题:输入时init 1
出现错误:init: must be run as PID 1
。我进入ps
,结果发现/sbin/init
1。我现在可以怎样使用init
?
答案1
你不能使用init
.这是不适合这项工作的程序。
您需要忘记init
可以作为普通命令调用的想法。init
存在这种情况的程序不是您init
拥有的程序。有 4 个init
程序可以将其作为普通命令调用,但您没有使用其中任何一个。相反,您使用的是 BusyBox init
,如果它检测到它已作为系统上除进程 #1 以外的任何内容被调用,则会打印该消息并退出。除了作为进程 #1 之外,它没有其他功能。
telinit
BusyBox 中也没有。它init
没有基于 FIFO 的客户端/服务器接口。
要关闭,您必须执行一些操作,最终导致SIGPWR
、SIGUSR1
、SIGUSR2
或SIGTERM
被发送到进程 #1。请注意,与其他系统管理工具集一样,“单用户模式”(自 1995 年以来的用词不当)并不是关闭目标。人们不会关闭到这种模式,并且 BusyBoxinit
实际上并不参与制定这种模式。
相反,在 BusyBox 之上使用 OpenRC 的系统中init
,这种模式完全属于 OpenRC 机制的范畴。 openrc single
更改为错误命名的“单一”模式。 (使用 OpenRC自己的 init
,这对你来说不是这样,有一个shutdown
命令可以与之对话。但那只是相当迂回的方式openrc single
事实证明,跑步。)
Alpine Linux 正在记录请注意,过时的 OpenRC。 OpenRC 本身不再有single
目录。 该内容于 2019 年被删除。此外,该命令于2014年rc
更改为openrc
。