![Linux 커널 default_console_loglevel의 의미](https://linux55.com/image/68485/Linux%20%EC%BB%A4%EB%84%90%20default_console_loglevel%EC%9D%98%20%EC%9D%98%EB%AF%B8.png)
default_console_loglevel
리눅스의 요점은 무엇입니까? 저는 보통 의 기본값으로 설명합니다 console_loglevel
. 그러나 이것이 의미하는 바는 어디에서도 설명된 것을 본 적이 없습니다.
게다가 저와 제가 확인한 대부분의 다른 시스템에서 4개의 로그 변수의 값은 다음과 같습니다.
[root@localhost printk]# cat /proc/sys/kernel/printk
4 4 1 7
아무것도 변경하지 않았기 때문에 console_loglevel
(4)는 (7)과 같아야 default_consolle loglevel
하지만 그렇지 않습니다. 그렇다면 용도/의미는 정확히 무엇입니까 default_console_loglevel
?
답변1
짧은 대답: loglevel=4
커널 명령줄에서 설정했거나( 확인 ) cat /proc/cmdline
실행되는 echo 4 > /proc/sys/kernel/printk
init 스크립트(또는 이에 상응하는 스크립트)가 있습니다.
두 경우 모두 default_console_loglevel
덮어쓰게 됩니다.
긴 답변:
을 읽으면 /proc/sys/kernel/printk
4개의 숫자가 반환됩니다. 이는 커널에 정의되어 있습니다.printkhint console_printk[4]
배열의 요소로초기화됨컴파일 타임에(printkc), 그러나 이 배열은 런타임에 수정될 수 있습니다.
이 값은 다음과 같습니다.
console_loglevel
(또는console_printk[0]
).default_message_loglevel
(또는console_printk[1]
).minimum_console_loglevel
(또는console_printk[2]
).default_console_loglevel
(또는console_printk[3]
).
console_loglevel
( console_printk[0]
)가 가장 중요하다.현재의콘솔 메시지 우선순위의 값입니다.
이는 언제든지 printk
커널 코드에서 호출이 이루어진다는 것을 의미합니다(이는 다음에도 적용됩니다).pr_warn
, pr_info
,등.), 런타임 시 해당 우선순위를 비교하고, 현재 우선순위보다 엄격히 낮은 경우 console_loglevel
콘솔에 인쇄됩니다. 예를 들어 5로 설정하면(예:KERN_경고), KERN_ERR
값이 4( ) 이하인 우선순위만 콘솔에 직접 인쇄됩니다.
이 값은 수정해야 하는 유일한 값이므로 예를 들어 를 사용하여 쓸 때는 이 값을 5로 echo 5 > /proc/sys/kernel/printk
설정합니다 .console_loglevel
console_loglevel
CONSOLE_LOGLEVEL_DEFAULT
(or)와 정확히 동일하며 컴파일 타임에 초기화됩니다 . 따라서 시작 시 기본값입니다. 이는 커널 컴파일 타임 구성(Kconfig)을 통해 설정됩니다.default_console_loglevel
console_printk[3]
default_console_loglevel
console_loglevel
CONFIG_CONSOLE_LOGLEVEL_DEFAULT
이 런타임을 구성 가능하게 만들기 위해(커널을 다시 컴파일할 필요 없음) 이 부팅 시간 기본값을 설정하는 또 다른 메커니즘이 있습니다. (여기서 숫자는) 커널 명령줄의 일부로 전달되면 로 초기화됩니다. 이는 수정되지 않으므로 이 경우에는 자동으로 무시되고 덮어쓰여집니다.loglevel=x
x
console_loglevel
x
default_console_loglevel
완전성을 위해 다른 두 값은 다음과 같습니다.
default_message_loglevel
(또는): 지정된 우선순위가 없는 명령의 기본값입니다console_printk[1]
.printk
이는CONFIG_MESSAGE_LOGLEVEL_DEFAULT
Kconfig()를 통해 설정됩니다. 컴파일 후에는 수정할 수 없습니다.minimum_console_loglevel
(또는console_printk[2]
): 최소 우선순위 값입니다. 1로 하드코딩되어 있으며 수정할 수 없습니다.
참고: 이 답변은 4년 동안 답변이 없는 질문에 대한 답변으로, 질문 작성자에게는 더 이상 유용하지 않을 수 있습니다. 하지만 제 첫 번째 Google 검색 결과이므로 다른 사람에게도 도움이 되기를 바랍니다.