printk()
커널 함수에서 사용되는 출력 함수이다.
printf와의 차이는 메시지 기록관리를 위한 로그레벨을 지정할 수 있다는 것이다.
로그레벨 | 명령어 | 의미 |
"<0>" | KERN_EMERG | 시스템이 동작하지 않는다. |
"<1>" | KERN_ALERT | 항상 출력 |
"<2>" | KERN_CRIT | 치명적인 정보 |
"<3>" | KERN_ERR | 오류 정보 |
"<4>" | KERN_WARNING | 경고 정보 |
"<5>" | KERN_NOTICE | 정상적인 정보 |
"<6>" | KERN_INFO | 시스템 정보 |
"<7>" | KERN_DEBUG | 디버깅 정보 |
위처럼 로그레벨을 지정하는 이유는 kernel source 내에서 원하는 정보만 출력할 수 있게 함이다.
사용법은 다음과 같다
printk(KERN_ERR"This is KERN_ERR option\n"); |
다음 명령을 실행해보면 현재의 로그레벨을 확인 할 수 있다.
$cat /proc/sys/kernel/prink 7 4 1 7 |
[7] : 현재 로그레벨
이 레벨보다 높은 메시지(숫자가 작은 수)만 출력을 해준다.
[4] : 기본 로그레벨
printk()함수를 입력하면서 별도로 로그레벨을 입력하지 않을 경우
[1] : 최소 로그레벨
부여할 수 있는 최소 로그레벨이다.
이 값이 1이라면 우리가 printk 함수를 입력하면서 0을 부여할 수 없다.
[7] : 부팅시 로그레벨
부팅시 출력될 레벨을 지정해주는 것이다.
출력되지 않았을 경우 다음과 같은 명령어로 로그버퍼에 기록된 내용을 볼 수 있다. (출력되지 않은 메시지도 볼 수 있음)
dmesg
# cat /proc/kmsg
printk 커널 메시지 출력