防止 systemd 将状态行记录到 tty

防止 systemd 将状态行记录到 tty

我想阻止内核和 systemd 将启动(服务)状态消息记录到 tty。

Debian Stretch/8 VM 的输出示例:

Debian Stretch/8 VM 的输出示例

系统手册页谈论一些可能控制日志记录的参数:

  • systemd 内核参数systemd.show_status
  • 内核内核参数quiet,也由系统检查

从手册页:

systemd.show_status=

采用布尔参数或常量 auto。如果是,则 systemd 管理器(PID 1)会在启动期间在控制台上显示简洁的服务状态更新。 auto 的行为与 false 类似,直到服务失败或启动出现明显延迟。默认为yes,除非quiet作为内核命令行选项传递,在这种情况下它默认为auto。

(强调我的。)

在我看来,与我所强调的相反的正是我想要的 - 尽管它不起作用。

我尝试了内核参数没有成功

# the man page was unclear whether false, 0 or no is correct
systemd.show_status=false
systemd.show_status=0
systemd.show_status=no
# the man page says the above config defaults to the value of the kernel parameter "quiet"
quiet
# log "less"
systemd.log_level=err
# explicitly say where to log to
systemd.log_target=journal-or-kmsg
# explicitly say where to log/output to even though the default should be "journal"
systemd.default_standard_output=journal

它们没有效果 - 我仍然看到状态消息。

(我在绝望中添加了最后三个选项,并排除其他错误源。)

命令行是

$ cat /proc/cmdline 
... quiet systemd.show_status=false systemd.log_level=err systemd.log_target=journal-or-kmsg systemd.default_standard_output=journal

Systemd 版本是 232-7,操作系统是 2016 年末的 Raspbian(基于 Debian 7),带有一些软件包,包括部分升级到 Debian Stretch/8 的 sytemd:

Linux raspberrypi 4.4.38-v7+ #938 SMP Thu Dec 15 15:22:21 GMT 2016 armv7l GNU/Linux

然而,在具有相同 systemd 版本和明显相同配置且只有一个quiet选项的新 Debian Stretch/8 上,我根本看不到日志记录。在那个新的系统上指定systemd.show_status=yes完全导致我想在另一个系统上摆脱的行为。

  • 一开始提到的内核选项是否应该按预期自行工作?
  • 如何识别控制台记录的内容?

相关内容