忘记运行级别。

忘记运行级别。

我不知道 telinit 命令,并且尝试使用它但没有任何好的结果。

在我的指挥之下

telinit 1

我收到以下错误:

timeout opening/witing control channel /dev/initctl

获得的 strace 对我没有帮助

...
rt_sigaction(SIGALRM, {0x11de0, [], 0x4000000 /* SA_??? */}, NULL, 8) = 0
setitimer(ITIMER_REAL, {it_interval={0, 0}, it_value={3, 0}}, {it_interval={0, 0}, it_value={0, 0}}) = 0
open("/dev/initctl", O_WRONLY)          = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---
sigreturn() (mask [QUIT])               = -1 EINTR (Interrupted system call)
write(2, "telinit: ", 9telinit: )                = 9
write(2, "timeout opening/writing control "..., 53timeout opening/writing control channel /dev/initctl
) = 53
exit_group(1)                           = ?
+++ exited with 1 +++

这是什么意思?

答案1

忘记运行级别。

是的,它与 systemd 的答案相同。

BusyBox 自己的init程序一开始就没有运行级别的概念。这是在BusyBox 文档。那里没有运行级别 1 将命令更改为。telinit与实际的 BusyBox 一起使用init是完全错误的。

telinit与某些一起使用时其他工具集的系统管理器作为进程 #1 运行,但它仍然是绝对错误的。在 systemd 操作系统上,运行级别已“过时”;它们不存在于由许多其他工具集管理的系统上(从 noshsystem-manager到 Gerrit Paperunit-init初始化NG);这只是真正的范·斯莫伦伯格init,约阿希姆·尼尔森的finit和暴发户完全有这个机制。

请注意,该telinit程序必须与系统管理器程序当时实际使用的工具集相匹配。有许多telinit来自不同工具集的程序。有些人期望在/dev/initctl.有些人期望在/run/initctl.有些协议通过其 FIFO 使用不同的协议,而 van Smoorenburginit协议无论如何都被其开发人员视为私有协议。许多甚至根本不使用 FIFO,而是围绕工具集本机机制进行填充,例如 noshtelinit是围绕 的填充system-control,Upstarttelinit发出 Upstart 事件,以及 systemdtelinit是其systemctl另一个名称的程序。即使对于那些确实使用 FIFO 的人来说,也需要有一个服务器,这必须与正在运行的系统管理器相匹配,在这些 FIFO 上运行和侦听。

所有这些都是为了让人们保持运行命令的习惯telinit

telinit忘记运行级别,如果您还没有养成使用(或者更糟糕的是,作为命令)的习惯init,最好首先不要学习它。

进一步阅读

相关内容