小编Gra*_*ent的帖子

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

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 …
Run Code Online (Sandbox Code Playgroud)

arch-linux systemd init runlevel

3
推荐指数
1
解决办法
5348
查看次数

为什么在 bash 的 printf 内置函数中只有一些字母被认为是无效数字?

我在胡闹,忘了删除printf语句的一部分,得到了这个输出:

# printf '%*s%c' {A..Z}
bash: printf: A: invalid number
bash: printf: D: invalid number
bash: printf: G: invalid number
bash: printf: J: invalid number
bash: printf: M: invalid number
bash: printf: P: invalid number
bash: printf: S: invalid number
bash: printf: V: invalid number
bash: printf: Y: invalid number
BCEFHIKLNOQRTUWXZ
Run Code Online (Sandbox Code Playgroud)

为什么被BCEFHIKLNOQRTUWXZ认为是有效数字?我认为这是因为它们可能是格式字符,但这似乎并不能解释Z.

有什么地方可以阅读/了解更多相关信息吗?

系统信息:

  • GNU bash,版本 4.4.12(1)-release (x86_64-unknown-linux-gnu)

bash printf

0
推荐指数
1
解决办法
1990
查看次数

标签 统计

arch-linux ×1

bash ×1

init ×1

printf ×1

runlevel ×1

systemd ×1