Linux 커널은 운영 체제의 핵심이며 시스템 리소스(예: CPU, I/O 장치, 물리적 메모리 및 파일 시스템)에 대한 액세스를 제어합니다. 부팅 과정과 시스템이 실행되는 동안 커널은 커널 링 버퍼에 다양한 메시지를 씁니다. 이러한 메시지에는 시스템 작동에 대한 다양한 정보가 포함됩니다.
커널 링 버퍼는 커널의 로그 메시지를 저장하는 데 사용되는 물리적 메모리의 일부입니다. 크기가 고정되어 있으므로 버퍼가 가득 차면 오래된 로그 레코드를 덮어쓰게 됩니다.
dmesg 명령줄 유틸리티는 Linux 및 기타 Unix 계열 운영 체제에서 커널 링 버퍼를 인쇄하고 제어하는 데 사용됩니다. 커널 부팅 메시지를 검사하고 하드웨어 관련 문제를 디버깅하는 데 유용합니다.
이 튜토리얼에서는 dmesg 명령의 기본 사항을 다룹니다.
dmesg 명령의 구문은 다음과 같습니다.
dmesg [OPTIONS] 在不带任何选项的情况下调用时,dmesg将所有消息从内核环形缓冲区写入标准输出:
$ dmesg
기본적으로 모든 사용자는 dmesg 명령을 실행할 수 있습니다. 그러나 일부 시스템에서는 dmesg에 대한 액세스가 루트가 아닌 사용자로 제한될 수 있습니다. 이 경우 dmesg를 호출할 때 다음과 같은 오류 메시지를 받게 됩니다:
dmesg: 읽기 커널 버퍼 실패: 작업이 허용되지 않음
커널 매개변수kernel.dmesg_restrict권한이 없는 사용자가 dmesg를 사용하여 커널 로그 버퍼의 메시지를 볼 수 있는지 여부를 지정합니다. 제한을 제거하려면 0으로 설정하세요.
$ sudo sysctl -w kernel.dmesg_restrict=0< / code>
$ sudo sysctl -w kernel.dmesg_restrict=0
通常,输出包含很多信息行,因此只能看到输出的最后一部分。要一次查看一页,请将输出通过管道传送到分页实用程序,例如less或more:
$ dmesg --color=always | less
其中的--color=always参数用于保留彩色输出。
如果要过滤缓冲区消息,可能使用grep。例如,要仅查看与 USB 相关的消息,请键入:
$ dmesg | grep -i usb
$ dmesg --color=always | less
--color=always 매개변수는 컬러 출력을 유지하는 데 사용됩니다. 버퍼 메시지를 필터링하려면 아마도 grep을 사용하세요. 예를 들어 USB 관련 메시지만 보려면 다음을 입력하세요.
$ dmesg | grep -i usb< / 코드>dmesg 从/proc/kmsg虚拟文件中读取内核生成的消息。该文件提供了到内核环形缓冲区的接口,并且只能由一个进程打开。如果系统上正在运行syslog进程,并且你尝试使用cat或less命令读取文件,则命令将挂起。
syslog守护程序将内核消息转储到/var/log/dmesg,因此你也可以使用该日志文件:
$ cat /var/log/dmesg
格式化 dmesg 输出。
dmesg命令提供了许多选项,可帮助你格式化和过滤输出。
dmesg中最常用的选项之一是-H(--human),它将输出更容易读的结果。
$ dmesg -H
要打印人类可读的时间戳,请使用-T(--ctime选项):
$ dmesg -T [Mon Oct 14 14:38:04 2019] IPv6: ADDRCONF(NETDEV_CHANGE): wlp1s0: link becomes ready
로그인 후 복사
时间戳格式也可以使用--time-format
选项设置,可以是ctime,reltime,delta,notime或iso。例如:要使用增量格式,你可以输入:
$ dmesg --time-format=delta
$ dmesg --time-format=delta
你也可以组合两个或多个选项:
$ dmesg -H -T
要实时观看dmesg命令的输出,请使用-w(--follow)选项:
$ dmesg --follow
두 개 이상의 옵션을 결합할 수도 있습니다 :
$ dmesg -H -T
에서 dmesg 명령의 출력을 보려면 다음에서 실시간으로 -w(--follow) 옵션을 사용하십시오:
$ dmesg --follow code> dmesg 출력을 필터링합니다. dmesg 출력을 특정 시설 및 수준으로 제한할 수 있습니다. dmesg는 다음 유형을 지원합니다: kern - 커널 메시지 user - 사용자 수준 메시지 mail - 메일 시스템 daemon - 시스템 데몬 auth - 보안/인증 메시지 -
sys 로그 내부 syslogd 메시지 lpr - 라인 프린터 하위 시스템 news - 네트워크 뉴스 하위 시스템 -f (--facility) 옵션을 사용하면 출력을 특정 장치로 제한할 수 있으며, 이 옵션은 하나 이상의 장치를 허용합니다. 쉼표로 구분된 기능.
예를 들어 커널 및 시스템 데몬 메시지만 표시하려면 다음을 사용할 수 있습니다.
$ dmesg -f kern,daemon
각 로그 메시지는 메시지의 중요성을 보여주는 로그 수준과 연결되며 dmesg는 다음 로그 수준을 지원합니다.
-
emerg - 시스템을 사용할 수 없습니다.
-
alert - 즉시 조치를 취해야 합니다.
-
crit - 긴급 상황
-
err - 오류 상태
-
warn - 경고 상태
-
얼음 아님 - 정상이지만 중요한 조건
-
info - 정보 제공
-
debug - 디버그 수준 메시지
-l (--level )
옵션을 사용하면 출력을 정의된 수준으로 제한할 수 있습니다. 이 옵션은 하나 이상의 쉼표로 구분된 수준을 허용합니다. 다음 명령은 오류 및 중요한 메시지만 표시합니다.-l(--level )
选项允许你将输出限制为定义的级别,该选项接受一个或多个逗号分隔的级别。以下命令仅显示错误和严重消息:
$ dmesg -l err,crit
清除环形缓冲区
-C(--clear)选项可让您清除环形缓冲区:
$ sudo dmesg -C
$ dmesg -l err,crit
링 버퍼 지우기 -C(--clear) 옵션을 사용하면 링 버퍼를 지울 수 있습니다.
$ sudo dmesg -C
루트 또는 sudo 권한이 있는 사용자만 버퍼를 지울 수 있습니다.
삭제하기 전에 버퍼 내용을 인쇄하려면 -c(--read-clear) 옵션을 사용하세요.
$ sudo dmesg -c
$ sudo dmesg -c
如果要在清除文件之前将当前dmesg日志保存到文件中,你可以将输出重定向到文件:
$ dmesg > dmesg_messages
현재 dmesg 로그를 지우기 전에 파일에 저장하려면 출력을 파일로 리디렉션할 수 있습니다.
$ dmesg > dmesg_messages
결론
dmesg 명령을 사용하면 커널 링 버퍼를 보고 제어할 수 있습니다. 커널이나 하드웨어 문제를 해결할 때 유용합니다.
위 내용은 Linux 커널 오류를 디버깅하는 방법을 정말로 알고 계십니까? 이 기사를 읽고 나면 깨닫게 될 것입니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!