sysctl -a에는 log_buf_len이 포함되지 않습니다.

sysctl -a에는 log_buf_len이 포함되지 않습니다.

sysctl을 통해 log_buf_len의 값을 확인하고 싶지만 sysctl -a표시되지 않습니다. 그 이유는 무엇이며 해당 값을 확인할 수 있는 다른 방법이 있습니까?

답변1

의 가치는 log_buf_len단번에 정해져 있습니다.커널을 구성 및 빌드하거나 매개변수를 사용하여 부팅하는 경우log_buf_len=NNN: 그 이후에는 변경할 수 없습니다. sysctl보통 당신이 관심 있는 것에 관심을 갖습니다.할 수 있는log_buf_len실행 중인 커널의 변경 사항: 아마도 이것이 포함되지 않은 이유일 것입니다.

커널 구성 파일을 통해 간단히 grep하여 구성된 값을 찾을 수 있습니다 LOG_BUF_SHIFT(사용 가능하다고 가정). 예를 들어, 내 Fedora 29 시스템에서는 다음을 수행합니다.

$ grep CONFIG_LOG_BUF_SHIFT /boot/config-5.2.11-100.fc29.x86_64 
CONFIG_LOG_BUF_SHIFT=18

log_buf_len그러면 2^18과 같습니다~하지 않는 한이는 시작 명령줄을 통해 설정되었습니다.

그런 경우(또는 구성 파일에 액세스할 수 없는 경우) 내가 아는 유일한 방법은 gdb실행 중인 커널을 확인하는 것입니다. 하지만 몇 년 동안 그렇게 하지 않았으므로 실제로 기억할 필요가 없습니다. 모든 단계 - 가장 어려운 점은 실행 중인 커널의 디버깅 기호를 얻는 것입니다. 다른 사람이 이러한 지침을 제공해야 합니다(또는 아마도 더 쉬운 방법을 제공해야 합니다. 예를 들어 로드될 때 값을 인쇄하는 커널 모듈을 작성할 수 있습니다. 간단한 커널 모듈 작성에 대한 튜토리얼이 많이 있습니다.여기: 이 튜토리얼은 2.6 커널 시대로 거슬러 올라갑니다. 오늘날 상황은 다를 수 있지만 저는 (순진하게?) 상황이 크게 다르지 않을 것이라고 생각합니다.

관련 정보