2009-11-23 2 views
0

모두 처리,LKM에서 syslog (printk)를 모니터하는 방법

나는 Linux Kernel Module을 작성하는 초보자입니다.

나는 디버깅 및 메시지 표시를 위해 linux 커널 소스 코드 (2.4.29)에서 printk 기능을 사용했습니다.

이제 httpd를 통해 추가 한 모든 메시지를 읽어야합니다.

나는 printk 함수 대신 파일에 메시지를 쓰려고 했으므로 직접 파일을 읽을 수있다.

하지만 아주 잘 작동하지 않습니다.

그래서, 내가 바보 같은 질문이 ...

IT는 시스템 로그를 모니터링하고 다른 파일로 재 작성하기 위해 LKM을 작성할 수 있습니다 ??

리눅스 커널이 "printk"를 실행할 때마다 LKM이 메시지를 인식하게하는 것이 가능합니까?

덕분에 많은 그것을 할 수있는 길을 잘못입니다

답변

3

,의 printk는 이미 않기 때문에 :이 파일은/proc/kmsg를에 기록합니다. 원하는 것은 klogd이며/proc/kmsg를 다루는 사용자 공간 유틸리티입니다.

또 다른 옵션은 먼저

+0

답장을 보내 주셔서 감사합니다. 도움이됩니다. 감사합니다. – douglas

+0

@douglas, 그의 도움이 도움이된다면, 당신은 그것을 upvoting 할 수 있습니다. –

0

당신은, 적, 적 열려고하고 싶지는 않을 링크 된 기사를 읽을 수있는 출력의 printk 메시지를 들고 커널 버퍼의 전체 내용을 것입니다,하지만 난 제안, dmesg 명령을 사용하는 것입니다 사용자 공간에있는 파일은 커널 내에서 블록 파일 시스템을 마운트합니다. FS가 중단되고 커널이 여전히 그것에 쓰려고 시도하고 있었다고 상상해보십시오. kaboom (많은 다른 이유 중 왜 나쁜 생각인지) :) shodanex가 말했듯이, 목적에 따라 klogd를 사용하는 것이 훨씬 낫습니다.

  • 데이터를 기다리는 동안 차단하기 위해 사용자 공간의 독자를 유발하는 문자 장치 드라이버를 만듭니다

    지금, 일반적으로 말해서, 당신은 같은 사용자 공간 프로그램에 의미있는 데이터를 전달하는 방법에는 여러 가지가 있습니다. IOCTL 다른 프로그램이 전송 된 메시지 수를 알 수 있습니다 그것() 인터페이스 등

  • 가의 노드를 작성 제공/PROC/yourdriver 정말 같은 일

을 달성하기 위해, 가장 실질적인 방법은 printk()를 사용하는 것입니다.

관련 문제