Linux dmesg 幾個常用參數

  • dmesg -L # 顯示顏色
  • dmesg -T # 在前面的單位顯示 年月日時分秒,比看 timestamp 方便
  • dmesg -Tx # 等級 與 單位使用 年月日時分秒 呈現
  • dmesg -l err,crit # 秀出重要的訊息
    • Log level
    • emerg: System is unusable.
    • alert: Action must be taken immediately.
    • crit: Critical conditions.
    • err: Error conditions.
    • warn: Warning conditions.
    • notice: Normal but significant condition.
    • info: Informational.
    • debug: Debug-level messages.

dmesg 需要 sudo 才能看,非 sudo 都可看可以用此設定

  • sudo sysctl -w kernel.dmesg_restrict=0

相關網頁

Linux Kernel 4.8 dmesg 讀取操作不被允許的解法

Debian stretch 目前的 Linux kernel 是 4.8 版,user 直接執行 dmesg 已經不被允許,會有下述訊息:

dmesg: read kernel buffer failed: 此項操作並不被允許

需要 root 或使用 sudo 才能讀取,例如:

  • sudo dmesg
  • sudo dmesg -T
  • 註:話說 /var/log/dmesg 一般 user 也不能讀取就是了

想要讓一般 user 可以正常執行 dmesg,可於 sysctl 設定下述參數即可:

  • kernel.dmesg_restrict = 0

註:0 是一般 user 可以直接使用,1 是一般 user 不允許操作

設定步驟

  1. vim /etc/sysctl.conf # 加入下述
    kernel.dmesg_restrict = 0
  2. sudo sysctl -p

詳見:Kernel.txt,下述摘錄自此篇:

dmesg_restrict:

This toggle indicates whether unprivileged users are prevented from using dmesg(8) to view messages from the kernel's log buffer.
When dmesg_restrict is set to (0) there are no restrictions. When dmesg_restrict is set set to (1), users must have CAP_SYSLOG to use dmesg(8).

The kernel config option CONFIG_SECURITY_DMESG_RESTRICT sets the default value of dmesg_restrict.