如何禁止 dhcpd 通过控制台登录提示符输出?

如何禁止 dhcpd 通过控制台登录提示符输出?

当 dhcpd 协商时,它会在登录提示符上打印其输出,这会使控制台登录提示符变得混乱(弄乱、争吵、丑化、覆盖、模糊 [googlers 的同义词])。如何禁止 dhcpd 通过控制台登录提示符输出?

使用 runit 运行 Void Linux,/etc/sv/dhcpd/run如下所示:

#!/bin/sh
[ -r conf ] && . ./conf
exec dhcpcd -B ${OPTS:=-M} 1>&2

/etc/sv/dhcpd/conf是空的。

答案1

我不确定为什么你dhcpcd不使用 syslog,因为这是该实用程序的默认行为(也许 Void Linux 使用特殊版本)。无论如何,输出都会发送到控制台,因为这是 init 管理器发送其输出的地方,除非重定向,否则由 init 管理器启动的应用程序将继承 STDOUT 和 STDERR。这意味着解决方法就是简单地重定向输出。
假设您的系统上运行着一个 syslog 守护进程,我个人会将该脚本更改为以下内容:

#!/bin/bash
[ -r conf ] && . ./conf
exec dhcpcd -B ${OPTS:=-M} > >(exec logger -t dhcpd -p daemon.info) 2> >(exec logger -t dhcpd -p daemon.err)

这会将 STDOUT 输出与级别一起发送到 syslog info,并将 STDERR 输出与err级别一起发送到 syslog。

答案2

freenode 上的 #voidlinux 上的 Duncaen 给了我这个关联。显然这种混乱的输出来自 dmesg,而不是 dhcpcd。解决方案是添加dmesg -n 1/etc/rc.local.

相关内容