printk를 선택적으로 활성화하는 방법은 무엇입니까?

printk를 선택적으로 활성화하는 방법은 무엇입니까?

커널에서 일부 명령문을 인쇄하고 싶지만 전부는 아닙니다.

그러면 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의 구성 설정은 다르며 언제나 그렇듯이 매뉴얼 페이지가 도움이 됩니다.

관련 정보