为什么 `init 0` 会导致 Arch 安装时出现“多余参数”?

Gra*_*ent 3 arch-linux systemd init runlevel

init 0我习惯了调用shutdown的老方法。不好,我知道;但是当我在新的 Arch 安装上尝试它时,我得到了这个:

# init 0
Excess Arguments
Run Code Online (Sandbox Code Playgroud)

这让我很困惑,因为我认为systemd应该支持运行级别?查看手册页,它提到了这一点:

为了与 SysV 兼容,如果 systemd 被称为 init 并且 PID 不为 1,它将执行 telinit 并传递所有未修改的命令行参数。这意味着 init 和 telinit 在从正常登录会话调用时基本上是等效的。有关详细信息,请参阅 telinit(8)。

我只是使用了错误的语法还是我完全误解了systemd

更多初始化/系统信息

# command -v init
/usr/bin/init

# file /bin/init
/usr/bin/init: symbolic link to ../lib/systemd/systemd

# /lib/systemd/systemd --version
systemd 234
+PAM -AUDIT -SELINUX -IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN default-hierarchy=hybrid
Run Code Online (Sandbox Code Playgroud)
# command -v telinit
/usr/bin/telinit

# file /bin/telinit
/bin/telinit: symbolic link to systemctl

# systemctl --version
systemd 234
+PAM -AUDIT -SELINUX -IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN default-hierarchy=hybrid
Run Code Online (Sandbox Code Playgroud)

一般系统信息

# uname -a
Linux arch 4.12.5-1-ARCH #1 SMP PREEMPT Fri Aug 11 12:40:21 CEST 2017 x86_64 GNU/Linux

# bash --version
GNU bash, version 4.4.12(1)-release (x86_64-unknown-linux-gnu) 
Run Code Online (Sandbox Code Playgroud)

Jde*_*eBP 5

为了与 SysV 兼容,[...]
系统234
[…]-SYSVINIT […]

您构建的 systemd 没有兼容性选项,因此手册中描述的兼容性行为不会出现。