概要
カーネルパラメータを変更する機会があったわけですが、全くといっていいほど今まで気にしたことがなかったのでこれを機にカーネルパラメータ周りや sysctl
の使い方を整理してみます。
sysctl
説明
man sysctl
より抜粋
sysctl は カーネルのパラメータを実行時に修正するのに用いる。変更できるパラメータは
/proc/sys/ 以下にリストされているものである。 Linux における sysctl の機能には procfs
が必要である。 sysctl は sysctl データの読み書き両方に使える。
option について
option | 意味 |
---|---|
-n | キーの名前は表示せず、値だけ表示する |
-e | 不明なキーについてエラーを無視する |
-N | 名前のみ表示する |
-q | 値のセットを標準出力に表示しない |
-w | sysctl の設定を変更する場合には、このオプションを指定する |
-p | 指定されたファイルから読み込んだ内容を sysctl 設定へロード。指定がなければ /etc/sysctl.confから |
-a | 現在利用できる全ての値を表示 |
-A | -a に同じ |
コマンド例一覧
- 値のみ表示
# sysctl -n net.ipv4.tcp_keepalive_time
7200
- 名前のみ表示
# sysctl -N net.ipv4.tcp_keepalive_time
net.ipv4.tcp_keepalive_time
- 設定の変更
# sysctl -w net.ipv4.tcp_keepalive_time=100
net.ipv4.tcp_keepalive_time = 100
# sysctl -a | grep keepalive_time
net.ipv4.tcp_keepalive_time = 100
- 設定のロード
* vim で設定変更してから -p でロード
# vim /etc/sysctl.conf
net.ipv4.tcp_keepalive_time = 100
を追記
# sysctl -a | grep keepalive_time
net.ipv4.tcp_keepalive_time = 7200
* まだ反映されていない
# sysctl -p
* 反映
net.ipv4.tcp_keepalive_time = 100
* 一部抜粋、反映された
# sysctl -a | grep keepalive_time
net.ipv4.tcp_keepalive_time = 100
* 反映されていることを確認
/etc/sysctl.conf と /proc/sys 配下の関係
設定変更は sysctl
コマンドを使用して行えますが /proc/sys 配下の管理ファイル群に echo 値 >
で書き込む形で反映させる方法もあります。
- 例
# echo 100 > /proc/sys/net/ipv4/tcp_keepalive_time
# sysctl -a | grep keepalive_time
net.ipv4.tcp_keepalive_time = 100
ただし /etc/sysctl.conf
へ書き込んでおらず /proc/sys
以下のみ変更した場合だと暫定での変更となり再起動後はデフォルトの設定へ戻ってしまいます。恒久的に反映したい際は/etc/sysctl.conf
へ設定を記載し sysctl -p
で反映させるのが良いと思います。
sysctl の覚書でした。
カーネルパラメータ1つ1つの覚書もしようと思いましたが数が多いのでまたそのような場面に遭遇したらということで:p