Liên hệProfile
Danh mục

Mục Lục

    Cách dùng lệnh dmesg trong Linux để xem và quản lý Kernel Log hiệu quả

    Nguyễn Hưng

    Ngày đăng:

    03/04/2026

    Cập nhật lần cuối:

    03/04/2026

    Lượt xem:
    Chia sẻ
    Đánh giá
    5/5 - (1 bình chọn)

    Nguyễn Hưng

    Lượt xem:
    Ngày đăng:

    03/04/2026

    Cập nhật lần cuối:

    03/04/2026

    Mục lục

    dmesg Linux là lệnh được sử dụng để hiển thị các thông điệp mà kernel ghi vào bộ đệm vòng (ring buffer). Trong bài viết dưới đây, mình sẽ hướng dẫn bạn chi tiết cách sử dụng lệnh dmesg để xác định các sự cố khởi động, kiểm tra việc nhận diện thiết bị mới và lọc thông tin kernel log một cách hiệu quả.

    Những điểm chính

    • Khái niệm lệnh dmesg: Hiểu rõ bản chất công cụ hiển thị thông báo từ bộ đệm vòng của kernel giúp bạn nắm bắt tình trạng vận hành của nhân hệ thống.
    • Chức năng chính: Nắm vững vai trò của dmesg trong việc kiểm soát quá trình khởi động, giám sát kết nối phần cứng và phát hiện lỗi driver kịp thời.
    • Hướng dẫn sử dụng chi tiết: Thành thạo các kỹ thuật xem log, lọc thông tin theo từ khóa), phân loại mức độ ưu tiên và định dạng thời gian dễ đọc.
    • Xử lý lỗi phổ biến: Trang bị kỹ năng khắc phục sự cố không nhận diện thiết bị ngoại vi và xử lý các lỗi về quyền hạn khi can thiệp vào bộ đệm.
    • Lưu ý khi vận hành: Nắm được các quy tắc về đặc quyền truy cập và giới hạn dung lượng bộ đệm để đảm bảo không bỏ sót các dữ liệu sự cố quan trọng.
    • Câu hỏi thường gặp: Giải đáp các thắc mắc liên quan đến lệnh dmesg.

    Lệnh dmesg là gì?

    Lệnh dmesg (viết tắt của Display Message) là một công cụ dòng lệnh thiết yếu trong hệ thống Linux, được sử dụng để hiển thị các bản ghi được ghi lại trong bộ đệm Ring Buffer của kernel. Các bản ghi này cung cấp thông tin quan trọng về các sự kiện khởi động hệ thống, quá trình phát hiện phần cứng, cấu hình driver và các lỗi hệ thống phát sinh.

    Lệnh dmesg được sử dụng để hiển thị các bản ghi được ghi lại trong bộ đệm Ring Buffer của kernel
    Lệnh dmesg được sử dụng để hiển thị các bản ghi được ghi lại trong bộ đệm Ring Buffer của kernel

    Chức năng của lệnh dmesg

    Các chức năng chính của lệnh dmesg là:

    • Kiểm soát quá trình khởi động hệ thống: Lệnh dmesg trích xuất toàn bộ bản ghi điệp từ lúc nhân hệ thống bắt đầu nạp, giúp phát hiện các lỗi nạp driver hoặc các linh kiện phần cứng không tương thích ngay từ giai đoạn đầu.
    • Giám sát kết nối phần cứng thời gian thực: dmesg ghi nhận và hiển thị các sự kiện khi thiết bị ngoại vi được kết nối hoặc ngắt kết nối, cung cấp thông tin chi tiết về tên thiết bị và cấu hình được nhận diện.
    • Xác định lỗi nhân hệ thống: dmesg truy vết các sự cố nghiêm trọng như lỗi bộ nhớ, lỗi trình điều khiển thiết bị hoặc các cảnh báo từ hệ thống quản lý tài nguyên.
    • Kiểm tra trạng thái tài nguyên phần cứng: Bạn sẽ được cung cấp thông số chi tiết về CPU, dung lượng RAM khả dụng, các điểm gắn kết ổ đĩa và trạng thái của các cổng giao tiếp.
    • Phân tích nhật ký tường lửa: Lệnh dmesg sẽ hiển thị các gói tin bị chặn hoặc các cảnh báo bảo mật nếu hệ thống tường lửa được cấu hình để ghi log vào kernel.
    Chức năng của lệnh dmesg
    Chức năng của lệnh dmesg

    Cú pháp và các tùy chọn dmesg cơ bản

    Cú pháp cơ bản của lệnh dmesg là:

    dmesg [OPTIONS]

    Trong đó:

    • dmesg: Tên lệnh, dùng để hiển thị các bản ghi trong kernel ring buffer.
    • [OPTIONS]: Các tùy chọn điều khiển cách hiển thị/lọc log.

    Dưới đây là bảng các tùy chọn phổ biến của dmesg:

    Tùy chọn dmesgChức năngCú pháp ví dụ
    (Không tùy chọn)Hiển thị toàn bộ log kernel tính từ khi khởi động.dmesg
    -HSử dụng chế độ phân trang và định dạng dễ đọc cho người dùng.dmesg -H
    -THiển thị mốc thời gian ở định dạng ngày giờ cụ thể.dmesg -T
    -wTheo dõi log kernel theo thời gian thực).dmesg -w
    -CXóa sạch nội dung bộ đệm vòng.sudo dmesg -C
    -LHiển thị các tính năng Localized log.dmesg -L

    Cách sử dụng lệnh dmesg chi tiết

    1. Xem toàn bộ Kernel Log

    Để hiển thị tất cả các thông điệp từ bộ đệm kernel và có thể cuộn trang để xem nội dung dài, bạn hãy sử dụng lệnh sau kết hợp với less:

    dmesg | less
    Xem toàn bộ Kernel Log
    Xem toàn bộ Kernel Log

    Bạn có thể cuộn qua nội dung từng trang một. Để tìm kiếm một từ khóa cụ thể, ví dụ: USB, bạn hãy gõ phím / sau đó nhập chuỗi cần tìm như /USB.

    nhập chuỗi cần tìm như /USB
    Nhập chuỗi cần tìm như /USB
     chuỗi USB cần tìm
    Chuỗi USB cần tìm

    2. Hiển thị log ở định dạng dễ đọc

    Để hiển thị log kèm theo mốc thời gian chính xác, có màu sắc phân loại và tự động phân trang, bạn hãy sử dụng lệnh dưới đây:

    dmesg -H

    Tùy chọn -H giúp người dùng dễ dàng theo dõi các cấp độ log khác nhau thông qua màu sắc và giao diện phân trang tích hợp.

    Hiển thị log ở định dạng dễ đọc với tùy chọn -H
    Hiển thị log ở định dạng dễ đọc với tùy chọn -H

    3. Lọc thông điệp theo thiết bị hoặc thành phần phần cứng

    Để chỉ xem các thông điệp liên quan đến một thành phần phần cứng cụ thể, bạn hãy sử dụng lệnh dmesg kết hợp với grep. Ví dụ, để lọc thông tin về ổ đĩa, bạn dùng lệnh:

    dmesg | grep 'sd'
    Lọc thông tin về ổ đĩa
    Lọc thông tin về ổ đĩa

    Để lọc thông tin liên quan đến bộ nhớ RAM, bạn sử dụng lệnh:

    dmesg | grep 'Memory'
    Lọc thông tin về bộ nhớ RAM
    Lọc thông tin về bộ nhớ RAM

    Việc kết hợp này giúp bạn nhanh chóng tìm thấy các lỗi hoặc thông tin cấu hình của các thiết bị cụ thể như USB, card mạng hay các thông báo chứa từ khóa “error”.

    4. Xem các thông điệp theo cấp độ ưu tiên

    Để chỉ hiển thị các thông điệp có mức độ quan trọng nhất định, bạn hãy sử dụng tùy chọn -l. Ví dụ, để chỉ hiển thị các thông điệp lỗi (error) và cảnh báo (warning), bạn chạy lệnh sau:

    dmesg -l err,warn
    Xem các thông điệp theo cấp độ ưu tiên
    Xem các thông điệp theo cấp độ ưu tiên

    Các cấp độ log phổ biến bao gồm: err (Error), warn (Warning), crit (Critical), info (Information) và debug.

    5. Xem các thông điệp mới nhất

    Để tập trung vào các sự kiện vừa mới phát sinh trong bộ đệm vòng, bạn hãy sử dụng lệnh sau:

    dmesg -k

    Tùy chọn này giúp người dùng dễ dàng theo dõi các sự kiện vừa xảy ra, rất hữu ích ngay sau khi bạn vừa kết nối một thiết bị mới vào máy tính.

    Xem các thông điệp mới nhất
    Xem các thông điệp mới nhất

    6. Xóa sạch bộ đệm kernel

    Để xóa toàn bộ các thông điệp hiện tại khỏi bộ đệm kernel nhằm phục vụ việc kiểm tra thiết bị mới mà không bị lẫn log cũ, bạn hãy sử dụng lệnh sau với quyền root:

    sudo dmesg -C

    Sau khi thực hiện lệnh xóa, bộ đệm sẽ chỉ bắt đầu ghi lại các thông điệp phát sinh sau thời điểm đó.

    Xóa sạch bộ đệm kernel
    Xóa sạch bộ đệm kernel

    Kiểm tra kết quả thành công

    Khi bạn kết nối một thiết bị USB mới, hãy chạy lệnh dmesg | tail để xác nhận kernel đã phát hiện, gán địa chỉ và tải driver thành công cho thiết bị. Ngoài ra, khi sử dụng tùy chọn -T, các mốc thời gian trong log phải được hiển thị rõ ràng theo định dạng ngày giờ thông thường.

    Cách xử lý lỗi phổ biến khi chạy lệnh dmesg

    Trong quá trình vận hành và trích xuất dữ liệu từ Kernel Ring Buffer, bạn có thể gặp phải một số tình huống sau:

    1. Sự cố không nhận diện thiết bị ngoại vi

    • Nguyên nhân: Thường do xung đột Driver (Module), thiếu nguồn cấp hoặc lỗi vật lý.
    • Giải pháp: Bạn sử dụng lệnh dmesg -l err để lọc riêng các bạn ghi lỗi. Log hệ thống thường chỉ đích danh Module nhân nào đang thất bại trong quá trình nạp hoặc nhận dạng thiết bị.

    2. Lỗi từ chối thực thi khi xóa bộ đệm

    • Nguyên nhân: Thao tác can thiệp và làm sạch bộ đệm vòng yêu cầu đặc quyền hệ thống cao nhất.
    • Giải pháp: Đảm bảo bạn thực thi lệnh với quyền quản trị thông qua tiền tố sudo.

    iconLưu ý

    Hành động này sẽ xóa sạch dữ liệu hiện tại trong buffer, bạn hãy cân nhắc sao lưu nếu cần thiết.

    3. Quá tải thông tin và mất dữ liệu cũ

    • Nguyên nhân: Lưu lượng log quá lớn gây khó khăn cho việc truy vấn. Ngoài ra, do đặc tính Ring Buffer, các dữ liệu cũ sẽ bị ghi đè khi bộ nhớ đầy.
    • Giải pháp: Bạn nên kết hợp với các công cụ điều hướng và lọc dữ liệu như | less (để cuộn trang) hoặc | grep <keyword> (để lọc từ khóa mục tiêu).

    Từ kinh nghiệm thực tế của mình, sau nhiều năm quản trị hệ thống Linux, mình nhận thấy thói quen hữu ích nhất là chạy dmesg | tail -50 ngay sau mỗi lần kết nối thiết bị mới hoặc khi hệ thống có biểu hiện bất thường. Ngoài ra, trước khi dùng dmesg -C để xóa bộ đệm, mình luôn sao lưu log hiện tại bằng lệnh dmesg -T > ~/dmesg_backup_$(date +%F).log — việc này đã cứu mình không ít lần khi cần truy lại nguyên nhân sự cố sau đó. Một điều nữa mình muốn chia sẻ là đừng chỉ dựa vào mỗi dmesg, bạn hãy kết hợp thêm với journalctl -k và kiểm tra các file trong /var/log/ để có cái nhìn toàn diện hơn, đặc biệt là trên các máy chủ production nơi mà việc bỏ sót một dòng log có thể khiến bạn mất hàng giờ để xử lý sự cố.

    3 lỗi phổ biến khi chạy lệnh dmesg
    Các lỗi phổ biến khi chạy lệnh dmesg

    Lưu ý khi sử dụng lệnh dmesg

    Khi thực thi lệnh dmesg để kiểm tra hệ thống, bạn cần lưu ý các vấn đề kỹ thuật sau để đảm bảo dữ liệu thu thập được là chính xác và hữu ích:

    • Bản chất của bộ đệm vòng: dmesg lưu trữ log trong một bộ đệm có dung lượng giới hạn. Khi bộ đệm đầy, các thông điệp cũ nhất sẽ bị ghi đè bởi thông điệp mới. Do đó, nếu xảy ra sự cố, bạn cần thực hiện truy xuất log ngay lập tức để tránh mất dữ liệu quan trọng.
    • Đặc quyền truy cập: Trên nhiều bản phân phối Linux hiện đại như Ubuntu hoặc Debian, quyền xem log nhân bị hạn chế để bảo mật. Bạn phải sử dụng sudo dmesg để có thể đọc được đầy đủ các thông tin nhạy cảm về hệ thống.
    • Quản lý mốc thời gian: Mặc định, dmesg hiển thị thời gian dưới dạng số giây tính từ lúc hệ thống khởi động, gây khó khăn cho việc đối chiếu. Do đó bạn hãy sử dụng tham số -T hoặc –ctime để chuyển đổi sang định dạng ngày giờ thực tế.
    • Cẩn trọng với lệnh xóa bộ đệm: Lệnh dmesg -C sẽ xóa sạch bộ đệm vòng của nhân, do đó bạn hãy thận trọng khi dùng lệnh này trên môi trường Production vì lệnh sẽ làm mất dấu vết của các lỗi hệ thống vừa xảy ra, gây khó khăn cho việc kiểm tra sự cố.
    • Tương tác với log hệ thống: Bạn cần phân biệt rằng dmesg chỉ lấy dữ liệu từ bộ đệm RAM của nhân, trong khi các file như /var/log/kern.log là dữ liệu đã được ghi xuống ổ cứng. Nếu máy chủ bị khởi động lại đột ngột, dữ liệu trong dmesg sẽ bị xóa, lúc này bạn phải tìm trong các file log cũ.
    Lưu ý khi sử dụng lệnh dmesg
    Lưu ý khi sử dụng lệnh dmesg

    Câu hỏi thường gặp

    Làm thế nào để theo dõi log kernel liên tục theo thời gian thực?

    Trong trường hợp bạn muốn giám sát các sự kiện phần cứng hoặc hệ thống liên tục theo thời gian thực, hãy sử dụng lệnh sau:
    dmesg -w
    Tùy chọn này giữ cho phiên làm việc luôn mở và tự động cập nhật các thông điệp mới nhất lên màn hình.

    Làm thế nào để kiểm tra xem hệ thống có vừa tắt tiến trình do thiếu RAM hay không?

    Để tìm kiếm các sự kiện mà nhân Linux buộc phải dừng một ứng dụng vì cạn kiệt bộ nhớ vật lý, bạn hãy thực hiện lệnh lọc sau:
    dmesg | grep -i "oom killer"
    Lệnh này giúp bạn xác định nhanh chóng liệu máy chủ có đang gặp tình trạng quá tải RAM nghiêm trọng dẫn đến việc các tiến trình bị tắt hay không.

    Tôi có thể sử dụng dmesg để kiểm tra thông tin card mạng hoặc ổ cứng cụ thể không?

    Có, bạn hoàn toàn có thể kết hợp với lệnh lọc để tìm thông tin về các thiết bị phần cứng cụ thể. Để kiểm tra các thông điệp liên quan đến card mạng, bạn hãy dùng lệnh:
    dmesg | grep -i eth
    Hoặc để kiểm tra thông tin liên quan đến các cổng kết nối ngoại vi, bạn sử dụng lệnh:
    dmesg | grep -i pci

    Lệnh dmesg trên các bản phân phối khác nhau như Arch Linux hay Ubuntu có khác gì nhau không?

    Về cơ bản, lệnh dmesg là một công cụ chuẩn của nhân Linux nên cú pháp và chức năng sẽ đồng nhất trên hầu hết các bản phân phối (Distro). Tuy nhiên, trên một số hệ thống sử dụng systemd như Arch Linux, bạn cũng có thể xem log tương tự bằng lệnh journalctl -k, nhưng dmesg vẫn là công cụ nhanh nhất để truy cập thẳng vào bộ đệm vòng của kernel.

    Lệnh dmesg là công cụ kiểm tra lỗi cấp kernel cơ bản và quan trọng nhất trong Linux. Việc thành thạo cách đọc log, sử dụng grep để lọc thông tin và phân loại thông điệp theo mức độ quan trọng sẽ giúp bạn xác định thành công các vấn đề về khởi động và nhận diện thiết bị một cách chính xác.

    5/5 - (1 bình chọn)
    Nguyễn Hưng
    Tôi là Nguyễn Hưng hay còn được biết đến với nickname là Bo, chuyên gia về hệ thống, mạng và bảo mật. Tôi là Co-Founder của Vietnix và Co-Founder của dự án Chống Lừa Đảo.
    0 0 đánh giá
    Đánh giá bài viết
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận

    BÀI VIẾT LIÊN QUAN

    Cách sử dụng lệnh sysctl trong Linux để quản lý thông số Kernel
    Cách sử dụng lệnh sysctl trong Linux để quản lý thông số Kernel

    sysctl là một công cụ dòng lệnh cho phép quản trị viên xem và thay đổi các tham số Kernel của Linux ngay trong lúc hệ thống đang chạy, thông qua cây hệ thống file ảo /proc/sys. Khi sử dụng sysctl, bạn có thể giám sát, tinh chỉnh và tối ưu hiệu năng hệ thống…

    03/04/2026

    Hướng dẫn sử dụng lệnh at Linux để thiết lập lịch tác vụ một lần chuyên nghiệp
    Hướng dẫn sử dụng lệnh at Linux để thiết lập lịch tác vụ một lần chuyên nghiệp

    Lệnh at Linux là một công cụ lập lịch tác vụ dùng để chạy một câu lệnh hoặc script một lần vào một thời điểm cụ thể trong tương lai và được thực thi bởi dịch vụ nền atd. Trong bài viết dưới đây, mình sẽ cùng bạn tìm hiểu về cách thiết lập lịch…

    03/04/2026

    Hướng dẫn sử dụng crontab trong Linux để lập lịch tự động hóa tác vụ
    Hướng dẫn sử dụng crontab trong Linux để lập lịch tự động hóa tác vụ

    Crontab là một công cụ trên Linux dùng để lập lịch cho các tác vụ tự động chạy định kỳ như hàng phút, giờ, ngày, tuần, tháng,… mà không cần bạn thao tác thủ công. Công cụ này có thể tự động hóa các việc lặp lại như backup dữ liệu, xóa log cũ, chạy…

    03/04/2026

    Cách sử dụng lệnh modprobe trong Linux để quản lý Kernel Modules
    Cách sử dụng lệnh modprobe trong Linux để quản lý Kernel Modules

    modprobe là lệnh được sử dụng để thêm hoặc bớt các module ra khỏi Kernel một cách an toàn và thông minh nhờ khả năng tự động xử lý các mối quan hệ phụ thuộc. Trong bài viết này, mình sẽ hướng dẫn bạn cách sử dụng lệnh modprobe từ cơ bản đến nâng cao…

    03/04/2026

    linux

    lenh

    text