시스템 로그에 변경 사항이 표시됩니다 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
그래서 요약하자면:
예, 몇 분마다 이 변수를 기록하는 스크립트를 작성할 수 있지만 변수가 변경될 때 로그에 표시된다면 왜 그렇게 하시겠습니까?
/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