현재 커널 매개변수를 보시겠습니까?

현재 커널 매개변수를 보시겠습니까?

시스템 로그에 변경 사항이 표시됩니다 kernel.perf_event_max_sample_rate.

몇 분마다 이 변수를 기록하는 빠른 스크립트를 작성할 수 있는지 궁금합니다. 현재:

sysctl -a | grep kernel.perf_event_max_sample_rate

매뉴얼 페이지 sysctl에는 다음과 같이 나와 있습니다.

sysctl- 런타임 시 커널 매개변수 구성

이것은 커널이 시작될 때 내 스크립트가 매개변수 세트를 얻게 된다는 뜻인가요? 변화를 받아들일 것인가?

답변1

따라서 Unix를 배울 때 해야 할 가장 좋은 일 중 하나는 맨 페이지를 읽는 것입니다.

나는 단지 심술궂은 늙은이가 아닙니다. 거기에는 참으로 귀중한 정보가 있습니다. 이 경우:

설명 sysctl은 런타임 시 커널 매개변수를 수정하는 데 사용됩니다. 사용 가능한 매개변수는 /proc/sys/에 나열되어 있습니다. Linux에서 sysctl을 지원하려면 Procfs가 필요합니다. sysctl을 사용하여 sysctl 데이터를 읽고 쓸 수 있습니다.

그래서 우리는 할 수있다:

$sudo sysctl -a | grep kernel.perf_event_max_sample_rate
kernel.perf_event_max_sample_rate = 50000
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.enp3s0.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"
sysctl: reading key "net.ipv6.conf.wlp1s0.stable_secret"

맨페이지를 읽으면 -a가 "현재 사용 가능한 모든 값을 표시"한다는 것을 알 수 있지만 다음도 볼 수 있습니다.

요약

  sysctl [options] [variable[=value]] [...]
  sysctl -p [file or regexp] [...]

이는 위 명령을 다음과 같이 단축할 수 있음을 의미합니다.

$ sudo sysctl kernel.perf_event_max_sample_rate
kernel.perf_event_max_sample_rate = 50000    

또는 다음과 같이 할 수 있습니다.

$ more /proc/sys/kernel/perf_event_max_sample_rate 
50000

그래서 요약하자면:

  1. 예, 몇 분마다 이 변수를 기록하는 스크립트를 작성할 수 있지만 변수가 변경될 때 로그에 표시된다면 왜 그렇게 하시겠습니까?

  2. /proc/sys/kernel/perf_event_max_sample_rate에서 직접 값을 읽는 것이 sysctl을 사용하는 것보다 더 효율적일 수 있으며, sysctl에서 특정 값을 요청하는 것이 grep을 사용하는 것보다 더 효율적입니다.

답변2

systctl의 맨페이지를 읽으면 systctl이 단지 미러라는 것을 알 수 있습니다./프로세스/시스템. 따라서 systctl 값을 변경하는 데 명령이 필요하지 않습니다. 빨리 달려

echo $value > /proc/sys/$sysctl_setting

*.*는 다음으로 대체됩니다./이 경우.

다음과 같이 while 루프로 반복합니다.

sleep_time=10m
while true ; do 
         echo $value > /proc/sys/$sysctl_setting
         sleep $sleep_time
done

관련 정보