为什么 dmesg 输出显示在 /dev/tty1 上

为什么 dmesg 输出显示在 /dev/tty1 上

这还是和我有关系的昨天的话题,所以有警报,或者可能只是我的终端上显示的日志/dev/tty1。当然,这很烦人,因为它显示在我的 bash 提示符中,所以每当我想输入某些内容时,我的输入都会被该输出覆盖。它定期打印出来,大约是3 second。所以你可以看到它有多烦人

我的终端更像是这样:

root@LFS:# echo "Hey get out of there"clocksource: timekeeping watchdog on CPU0: acpi_pm wd-wd readback delay of 643744ns
clocksource: wd-tsc-wd read-back delay of 182144ns, clock-skew test skipped!
clocksource: timekeeping watchdog on CPU0: acpi_pm wd-wd readback delay of 643744ns
clocksource: wd-tsc-wd read-back delay of 182144ns, clock-skew test skipped!
clocksource: timekeeping watchdog on CPU0: acpi_pm wd-wd readback delay of 643744ns
clocksource: wd-tsc-wd read-back delay of 182144ns, clock-skew test skipped!
...

我怀疑这不是因为clocksource,而是dmesg输出。因为当我指挥时dmesg。它显示相同。但每当我使用时/dev/pts,我都会在 LFS 系统中登录 SSH 时测试它,不会定期出现烦人的输出或警报。

那么如何防止dmesg日志显示到/dev/tty1

更新:内部/proc/cmdline

root@LFS:~# cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-5.16.9-lfs-11.1 root=/dev/sda1 ro

答案1

您可以通过降低控制台日志级别来禁用控制台输出。例如,要通过将控制台日志级别降低到 0 来禁用所有输出:

# sysctl kernel.printk='0 4 0 5'

kernel.printk有四个参数:

  1. 控制台日志级别,控制哪些消息将显示在控制台上(这是您最关心的);
  2. 尚未设置日志级别的任何消息的默认消息日志级别;
  3. 允许的最小控制台日志级别,将控制台日志级别限制为最小值;
  4. 默认控制台日志级别(当前在代码中未使用)。

您可以将其保留在/etc/sysctl.conf, 或中/etc/sysctl.d/

您还可以使用 dmesg 来执行此操作dmesg

# dmesg -n1

man dmesg

-n, --控制台级别等级:设置将消息记录到控制台的级别。级别是级别编号或级别名称的缩写。例如,-n 1 或 -nalert 可防止除紧急(紧急)消息之外的所有消息出现在控制台上。所有级别的消息仍然写入 /proc/kmsg,因此 syslogd(8) 仍然可以准确控制内核消息出现的位置。当使用 -n 选项时,dmesg 将不会打印或清除内核环形缓冲区。对于所有支持的级别,请参阅 --help 输出。

loglevel=N您还可以通过传递, see 来在内核命令行上对此进行调整Documentation/admin-guide/kernel-parameters.txt。该选项也是可用的——它实际设置的级别取决于编译时设置的 ,quiet的值。CONFIG_CONSOLE_LOGLEVEL_QUIET


每个控制台的日志级别

顺便说一句,在我之后为每个控制台设置控制台日志级别的补丁合并到内核中后,我们将能够直接减少或增加特定类别控制台的日志级别,而不是使用 sysfs 中的控件影响整个系统:

% ls -l /sys/class/console/ttyS/
total 0
lrwxrwxrwx 1 root root    0 May 20 14:40 subsystem -> ../../../../class/console/
-r--r--r-- 1 root root 4096 May 20 14:41 effective_loglevel
-r--r--r-- 1 root root 4096 May 20 14:41 effective_loglevel_source
-r--r--r-- 1 root root 4096 May 20 14:41 enabled
-rw-r--r-- 1 root root 4096 May 20 14:41 loglevel
-rw-r--r-- 1 root root 4096 May 20 14:40 uevent

该格式仍然有些变化,但当它合并到接下来的几个内核版本中时,它可能看起来与此类似。kernel.printk也可能会被弃用,以支持更精细的控制。

参见Documentation/admin-guide/per-console-loglevel.rst补丁了解更多信息。

相关内容