我正在使用内核模块,因此我需要处理 dmesg 输出。但是,我无法命令dmesg-c。我可以 dmesg,但无法清除缓冲区。我搜索了诸如
sudo sysctl kernel.dmesg_restrict =0
但他们并没有解决问题。为什么我无法清除缓冲区?
答案1
这在中进行了解释man 2 syslog
:除“read all”和“size”之外的所有 syslog 命令仅对 root 可用。dmesg_restrict
仅控制对“全部读取”和“大小”的访问;将其设置为 1 会将它们限制为 root,将其设置为 0 将使它们可供非 root 进程使用。
dmesg -c
在所有情况下都需要 root(严格来说,CAP_SYS_ADMIN
或):CAP_SYSLOG
sudo dmesg -c
答案2
就跟sudo dmesg -c
伙计们一起去吧。我已经知道它有效,但我想知道为什么它在没有sudo
.然而,没有令人满意的答案,那么我选择选择更安全的答案。