커널에서 일부 명령문을 인쇄하고 싶지만 전부는 아닙니다.
그러면 printk를 선택적으로 사용할 수 있나요?
선택적이란 특정 위치에서만 printk를 활성화하고 다른 위치에서는 비활성화하고 싶다는 것을 의미합니다.
이제 전역적으로만 활성화하거나(커널 구성에서 printk 활성화) 비활성화할 수 있습니다.
답변1
(편집: 추가 정보도 여기에 있습니다.kernel.printk 값에 대한 설명)
sysctl 명령/시스템을 사용하여 필요에 따라 커널 printk 설정을 변경할 수 있습니다.
sysctl -w kernel.printk="4 4 1 7"
printk 설정을 "기본" 값으로 설정하는 반면
sysctl -w kernel.printk="3 4 1 3"
낮은 수준의 메시지가 콘솔에 출력되는 것을 방지합니다.
sysctl kernel.printk
현재 설정이 표시됩니다.
Linux 문서에서(커널 문서):
인쇄:
printk의 네 가지 값은 console_loglevel, default_message_loglevel, 최소_console_loglevel 및 default_console_loglevel을 나타냅니다.
이 값은 오류 메시지를 인쇄하거나 기록할 때 printk()의 동작에 영향을 줍니다. 다양한 로그 수준에 대한 자세한 내용은 "man 2 syslog"를 참조하세요.
- console_loglevel: 이보다 우선순위가 높은 메시지는 콘솔에 인쇄됩니다.
- default_message_loglevel: 명시적인 우선순위가 없는 메시지는 이 우선순위로 인쇄됩니다.
- minimum_console_loglevel: console_loglevel이 설정할 수 있는 최소(최고) 값
- default_console_loglevel: console_loglevel의 기본값
sysctl을 사용하여 새 값을 쓰려면(-w) 일반적으로 루트이거나 sudo 권한이 있어야 합니다. 또한 루트(ish)가 필요한 /proc/sys/kernel/printk에 값을 에코할 수도 있습니다.
편집 2:
내 Monkey 디버깅 도우미는 유용할 수 있는 커널 printk 메시지를 얻는 또 다른 방법이 있음을 상기시켜주었습니다.
syslog/rsyslog/whateverlog 데몬은 커널 출력을 특정 파일, 파이프 또는 소켓으로 보내 사용자가 선택한 프로그램에서 읽고, 구문 분석하고, 저장하거나 삭제할 수 있도록 요청할 수 있습니다(해당하는 경우).
내 rsyslog.conf가 모두 표시됩니다.빡빡한 줄. *레벨 메시지는 다음으로 전송됩니다./var/log/kern.log, 쉽게 파일을 듣고 원하는 메시지를 얻을 수 있습니다.
자신만의 정의를 내릴 수도 있습니다.시설입력하고 rsyslog가 이를 특별한 장소로 보내도록 하십시오. 선택적으로 보내는 것조차커널 경고또는커널 임계값원한다면 어딘가에 메시지를 보내세요.
rsyslog와 syslog의 구성 설정은 다르며 언제나 그렇듯이 매뉴얼 페이지가 도움이 됩니다.