Các dmesg lệnh hiển thị nội dung của bộ đệm thông báo của hạt nhân kể từ lần khởi động gần đây nhất của hệ thống. Nó hiển thị rất nhiều chi tiết về cách hệ thống đang hoạt động và các vấn đề mà nó có thể đang gặp phải mà bạn thường sẽ không thấy. Đó có thể là rất nhiều dữ liệu, nhưng có một số thủ thuật để chia nhỏ nó.
Ví dụ: Mặc dù hệ thống được truy vấn bên dưới chỉ mới hoạt động được hơn ba ngày, nhưng nó đã thu thập hơn một nghìn dòng dữ liệu.
$ dmesg | wc -l 1034
Nếu bạn chỉ gõ dmesg, bạn sẽ thấy tất cả dữ liệu có sẵn. Quyền truy cập Sudo là không bắt buộc. Bạn cũng có thể chuyển đầu ra của dmesg đến hơn và ít hơn các lệnh để quét qua nó hoặc chỉ cần chuyển đầu ra tới grep, nhưng bản thân lệnh cung cấp rất nhiều tùy chọn để chọn thông tin phù hợp nhất từ tệp.
$ dmesg | grep NIC [ 21.483886] e1000e 0000:00:19.0 enp0s25: NIC Link is Up 100 Mbps Full Duplex, Flow Control: Rx/Tx [ 27.504178] e1000e 0000:00:19.0 enp0s25: NIC Link is Down
Một trong những điều bạn sẽ nhận thấy khi lần đầu tiên bắt đầu nhìn vào dmesg đầu ra là đánh số ở bên trái của mỗi dòng. Đây là những ngày / giờ được biểu thị bằng giây và nano giây kể từ lần khởi động cuối cùng. Chúng sẽ trông như thế này:
[ 12.469099] [274011.884318]
Biểu diễn ngày đầu tiên ở trên có nghĩa là dữ liệu được ghi lại khoảng 12 giây rưỡi kể từ lần khởi động cuối cùng hệ thống. Một phép tính như dưới đây cho chúng ta biết rằng ngày thứ hai được hiển thị là hơn ba ngày sau. Con số 86400 là số giây trong một ngày.
$ echo "scale=2; 274011 / 86400" | bc 3.17
Một cách dễ dàng hơn để xem trường ngày / giờ là sử dụng -T hoặc là -H tùy chọn dịch các trường này thành ngày và giờ giống như những trường mà chúng ta thường thấy.
$ dmesg -T | head -3 [Fri Dec 3 08:52:34 2021] microcode: microcode updated early to revision 0xa0b, date = 2010-09-28 [Fri Dec 3 08:52:34 2021] Linux version 5.15.4-101.fc34.x86_64 (mockbuild@bkernel02.iad2.fedoraproject.org) (gcc (GCC) 11.2.1 20210728 (Red Hat 11.2.1-1), GNU ld version 2.35.2-6.fc34) #1 SMP Tue Nov 23 18:58:50 UTC 2021 [Fri Dec 3 08:52:34 2021] Command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-5.15.4-101.fc34.x86_64 root=UUID=a9e33237-9114-44ae-afd5-8ddb231d301f ro rootflags=subvol=root rhgb quiet $ dmesg -H | head -4 [Dec 3 08:52] microcode: microcode updated early to revision 0xa0b, date = 2010-09-28 [ +0.000000] Linux version 5.15.4-101.fc34.x86_64 (mockbuild@bkernel02.iad2.fedoraproject.org) (gcc (GCC) 11.2.1 20210728 (Red Hat 11.2.1-1), GNU ld version 2.35.2-6.fc34) #1 SMP Tue Nov 23 18:58:50 UTC 2021 [ +0.000000] Command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-5.15.4-101.fc34.x86_64 root=UUID=a9e33237-9114-44ae-afd5-8ddb231d301f ro rootflags=subvol=root rhgb quiet [ +0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
Bạn có thể sử dụng các lệnh như được hiển thị bên dưới để tìm ra các chi tiết liên quan đến RAM, đĩa cứng, ổ USB và các cổng nối tiếp.
$ dmesg | grep -i memory $ dmesg | grep -i dma $ dmesg | grep -i usb $ dmesg | grep -i tty
Table of Contents
Sử dụng các phương tiện ghi nhật ký
Bạn có thể chọn dmesg nội dung dựa trên quá trình tạo ra các thông báo. Các phương tiện ghi nhật ký được hỗ trợ bao gồm:
- kern – thông điệp hạt nhân
- người dùng – thông báo cấp người dùng ngẫu nhiên
- hệ thống thư tín
- daemon – daemon hệ thống
- auth – thông báo bảo mật / ủy quyền
- syslog – thông báo được tạo nội bộ bởi syslogd
- lpr – hệ thống con máy in dòng
- tin tức – hệ thống con tin tức mạng
Như bạn sẽ thấy trong các ví dụ dưới đây, một số lệnh sẽ không hiển thị đầu ra vì không có hoạt động liên quan nào được ghi lại.
Sử dụng kern
$ dmesg -f kern | head -2 [ 0.000000] microcode: microcode updated early to revision 0xa0b, date = 2010-09-28 [ 0.000000] Linux version 5.15.4-101.fc34.x86_64 (mockbuild@bkernel02.iad2.fedoraproject.org) (gcc (GCC) 11.2.1 20210728 (Red Hat 11.2.1-1), GNU ld version 2.35.2-6.fc34) #1 SMP Tue Nov 23 18:58:50 UTC 2021
Đang sử dụng người dùng
$ dmesg -f user | head -2
Sử dụng thư
$ dmesg -f mail | head -2
Sử dụng daemon
$ dmesg -f daemon | head -2 [ 1.772531] systemd[1]: systemd v248.9-1.fc34 running in system mode. (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP +GCRYPT +GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN +IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +BZIP2 +LZ4 +XZ +ZLIB +ZSTD +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified) [ 1.784315] systemd[1]: Detected architecture x86-64.
Sử dụng auth
$ dmesg -f auth | head -2
Sử dụng nhật ký hệ thống
$ dmesg -f syslog | head -2 [ 7.451957] systemd-journald[192]: Received SIGTERM from PID 1 (systemd). [ 9.575729] systemd-journald[499]: Received client request to flush runtime journal.
Sử dụng lpr
$ dmesg -f lpr | head -2
Sử dụng tin tức
$ dmesg -f news | head -2
Sử dụng các cấp độ
Các dmesg lệnh cũng cho phép bạn kéo dữ liệu theo cấp độ nhật ký. Bao gồm các:
- khẩn cấp – hệ thống không sử dụng được
- cảnh báo – hành động phải được thực hiện ngay lập tức
- crit – điều kiện quan trọng
- lỗi – điều kiện lỗi
- cảnh báo – điều kiện cảnh báo
- thông báo – tình trạng bình thường nhưng đáng kể
- thông tin – thông tin
- gỡ lỗi – thông báo cấp gỡ lỗi
Sử dụng khẩn cấp
$ dmesg -l emerg | head -2
Sử dụng cảnh báo
$ dmesg -l alert | head -2
Sử dụng crit
$ dmesg -l crit | head -2
Sử dụng lỗi
$ dmesg -l err | head -2 [ 6.580237] usb 2-2: device descriptor read/64, error -110 [ 7.875161] sd 4:0:0:0: [sdc] No Caching mode page found
Sử dụng cảnh báo
$ dmesg -l warn | head -2 [ 0.006843] ACPI BIOS Warning (bug): 32/64X length mismatch in FADT/Pm1aEventBlock: 32/8 (20210730/tbfadt-564) [ 0.006846] ACPI BIOS Warning (bug): 32/64X length mismatch in FADT/Pm1aControlBlock: 16/8 (20210730/tbfadt-564)
Sử dụng thông báo
$ dmesg -l notice | head -2 [ 0.000000] Linux version 5.15.4-101.fc34.x86_64 (mockbuild@bkernel02.iad2.fedoraproject.org) (gcc (GCC) 11.2.1 20210728 (Red Hat 11.2.1-1), GNU ld version 2.35.2-6.fc34) #1 SMP Tue Nov 23 18:58:50 UTC 2021 [ 0.157702] Kernel command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-5.15.4-101.fc34.x86_64 root=UUID=a9e33237-9114-44ae-afd5-8ddb231d301f ro rootflags=subvol=root rhgb quiet
Sử dụng thông tin
$ dmesg -l info | head -2 [ 0.000000] microcode: microcode updated early to revision 0xa0b, date = 2010-09-28 [ 0.000000] Command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-5.15.4-101.fc34.x86_64 root=UUID=a9e33237-9114-44ae-afd5-8ddb231d301f ro rootflags=subvol=root rhgb quiet
Sử dụng gỡ lỗi
$ dmesg -l debug | head -2 [ 0.000888] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved [ 0.000891] e820: remove [mem 0x000a0000-0x000fffff] usable
Gói (lại
Các dmesg lệnh cung cấp rất nhiều chi tiết về cách hệ thống Linux của bạn đang hoạt động và các vấn đề mà bạn có thể không biết. Nó cũng có thể cung cấp cho bạn nhiều thông tin chi tiết về cách hệ thống của bạn hoạt động.
Bản quyền © 2021 IDG Communications, Inc.