システムログに変更が表示されますkernel.perf_event_max_sample_rate
。
数分ごとにこの変数を記録するクイックスクリプトを書くことができるかどうか疑問に思います。現在:
sysctl -a | grep kernel.perf_event_max_sample_rate
マニュアルページ sysctl には次のように記載されています。
sysctl
- 実行時のカーネルパラメータの設定
これは、カーネルの起動時にスクリプトがパラメータセットを取得することを意味しますか?変更を受け入れるか?
答え1
したがって、Unixを学ぶときにすべき最善のことの1つは、マンページを読むことです。
私はただの苦手な老人ではありません。そこには本当に貴重な情報があります。この場合:
説明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