不需要的控制台文本

不需要的控制台文本

由于某种原因,每次我插入 USB 设备时,一大堆消息都会转储到终端上。 (说一下设备ID、缓冲模式等)

我该如何防止这种情况发生?


更新:

有几个人问过我一些问题,所以让我总结一下我迄今为止收集到的可能相关的信息:

  • 无论我当前正在查看哪个虚拟终端,都会出现零散的文本。每行都带有看起来像系统正常运行时间的前缀。

  • quiet参数已经在内核命令行上。

  • 当前设置printk6 4 1 7

  • 据我所知,该syslog软件包甚至没有安装。 (也不是rsyslog。)当然,在/etc.

  • 肯定是 init systemd

  • /etc/sysctl.d是空的。/etc/sysctl.conf仅包含评论。

答案1

启动方式:

quiet loglevel=3

欲了解信息:

quiet       [KNL] Disable most log messages

loglevel=   All Kernel Messages with a loglevel smaller than the
        console loglevel will be printed to the console. It can
        also be changed with klogd or other programs. The
        loglevels are defined as follows:

        0 (KERN_EMERG)      system is unusable
        1 (KERN_ALERT)      action must be taken immediately
        2 (KERN_CRIT)       critical conditions
        3 (KERN_ERR)        error conditions
        4 (KERN_WARNING)    warning conditions
        5 (KERN_NOTICE)     normal but significant condition
        6 (KERN_INFO)       informational
        7 (KERN_DEBUG)      debug-level messages

启动检查后(您希望看到 3 作为报告的第一个数字):

$ sysctl kernel.printk
kernel.printk = 3       4       1       4

kernel.printk欲了解 更多信息,请参阅kernel.printk 值的描述

printk稍后可能会在启动过程中被 覆盖sysctl,通常一次处理 /etc/sysctl.conf/etc/sysctl.d/*(取决于您的发行版和启动过程)。

然后,根据您的日志守护程序,您可能需要进一步调整。因为systemd您可能会查看/etc/systemd/journald.conf.

答案2

如果消息前面有数字,则这些消息是由 Linux 内核生成的。 (该数字表示自系统启动以来的秒数。)要停止这些消息,请将该quiet参数添加到内核命令行中。您可以通过编辑 /boot 分区中的文件或使用引导加载程序提供的配置工具(例如 GRUB)来完成此操作。这也会在系统启动时停止显示消息。

答案3

如果Miroslav Koskar 关于内核的建议loglevel没有帮助(你也可以在那里使用 2 或 1 而不是 3,IMO),看看你的/etc/syslog.conf(或rsyslog.conf) 中包含/dev/console.这表示系统记录器传递到控制台的消息级别,或许如果内核没有直接执行此操作,则会出现这种情况。

如果该行看起来像这样:

*.warn       /dev/console

更改*.warn*.crit*.emerg,或者直接将其注释掉。有关更多信息,请参阅系统日志文档。


由于loglevel不起作用并且您显然没有 syslogd (坏主意,顺便说一句),问题可能是您的 printk 设置是 6 4 1 7。第一个是控制台日志级别,这就是您需要更改的内容。您可以通过以下两种方式之一以 root 身份执行此操作:

sysctl kernel.printk="2 4 1 7"
   - or -
echo "2 4 1 7" > /proc/sys/kernel/printk

然后您可以使用sysctl kernel.printk或检查它们cat /proc/sys/kernel/printk。 USB 消息不太可能是关键消息(日志级别 2),并且如果它们从任何模块无优先级提交,则它们使用默认值,即四个 printk 值中的第二个(在本例中为 4)。

如果这对您有用,您应该添加一个文件并添加/etc/sysctl.d/一行:

kernel.printk = 2 4 1 7

我认为你不需要在那里引用。如果该目录不存在,请向 中添加一行/etc/sysctl.conf,并在必要时创建它。有关详细信息,请参阅man sysctl.conf

答案4

我最终能够通过将以下命令添加到我的启动脚本之一来解决此问题:

klogconsole -l 3

这似乎让系统关闭了。 (至少在执行命令之后。)

相关内容