GNU/Linux >> Linux の 問題 >  >> Cent OS

CentOS / RHEL で sysctl を使用して (即時かつ永続的に) カーネル パラメーターをクエリおよび変更する方法

この投稿の目的は、sysctl ユーティリティを使用して、Red Hat (RHEL/CentOS) および Oracle Linux (OL) システムでカーネル パラメータを設定する方法を説明することです。 sysctl ユーティリティ (/sbin/sysctl) を使用すると、(特権を持つ) ユーザーは実行時にカーネル パラメータを照会および変更できます。このユーティリティはほとんどの Linux ディストリビューションに共通ですが、ディストリビューション間で微妙な違いが存在する場合があります。 RHEL/OL および SuSE。表示/変更できるパラメーターは、procfs ファイルシステム /proc/sys を介して公開されるパラメーターです。設定ファイルで設定する場合は、ドット(「.」)表記を使用します。

特定のカーネル パラメータのクエリ

名前付きカーネル パラメータ値を照会するには、「-n」オプションを使用して sysctl ユーティリティを実行します。 ' または引数なし 例:

# sysctl kernel.shmmax
kernel.shmmax = 68719476736
# sysctl -n kernel.shmmax
68719476736

上記の例では、パラメータ kernel.shmmax は /proc/sys/kernel/shmmax に関連しています。例:

# cat /proc/sys/kernel/shmmax
68719476736

すべてのカーネル パラメータのクエリ

すべてのカーネル パラメータ値を照会するには、「-a」を指定して systctl ユーティリティを実行します。 ‘ 引数例:

# sysctl -a | more
kernel.sched_child_runs_first = 0
kernel.sched_min_granularity_ns = 4000000
kernel.sched_latency_ns = 20000000
kernel.sched_wakeup_granularity_ns = 4000000
kernel.sched_tunable_scaling = 1

上記の出力で特定のカーネル パラメーターを grep できます。カーネル パラメータのグループを除外するには、正規表現を使用します。たとえば、

# sysctl -a | grep ^kernel.s[h,e]m
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
kernel.shmmni = 4096
kernel.shm_rmid_forced = 0
kernel.sem = 250	32000	100	128

カーネル パラメータの即時設定 (永続的ではない)

sysctl パラメータ値をすぐに (永続的ではなく) 設定するには、sysctl -w を使用します。 指図。例:

# sysctl -w kernel.sysrq=0
kernel.sysrq = 0

複数の値を取るパラメータは、値を引用符で囲む必要があります。たとえば、net.ipv4.ip_local_port_range を 1025-65535 に設定するには:

# sysctl -w net.ipv4.ip_local_port_range="1025 65535"

または、sysctl パラメータを表す procfs ファイルに値を直接エコーすることもできます。例:

# echo 1 > /proc/sys/net/ipv4/ip_forward
# echo "1025 65535" > /proc/sys/net/ipv4/ip_local_port_range

カーネル パラメータの永続的な設定

「systctl -w」メソッドを使用して変更されたカーネル パラメータ値は揮発性です。つまり、サーバーの再起動時に失われます。 sysctl ユーティリティの構成ファイル /etc/sysctl.conf を使用して、デフォルト以外のカーネル パラメータ値を永続的に保存する必要があります。このファイルはサーバーの起動時に解析され、その中の値がカーネルの構成に使用されます。 /etc/sysctl.conf ファイルを使用してカーネル パラメータを設定するために必要な構文は、component.parameter=value の表記に従います。 kernel.shmmax =33554432.
構文

# vi /etc/sysctl.conf
[component].[parameter]=[value]

以下は /etc/sysctl.conf ファイルのサンプルです:

# grep -v ^# /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
....

「systctl -w」メソッドを使用してカーネル パラメータを変更するだけでなく、パラメータを /etc/sysctl.conf ファイルに追加して変更し、sysctl ユーティリティで「-p<」を使用してファイルを解析することもできます。 /強い> ‘ 引数例:

# sysctl -n kernel.ctrl-alt-del
0
# echo "kernel.ctrl-alt-del=1" >> /etc/sysctl.conf
# sysctl -p
kernel.ctrl-alt-del = 1

カーネル パラメータを /etc/sysctl.conf ファイルに追加して変更すると、設定 (sysctl -p) されるだけでなく、変更された値がサーバーの再起動後も保持されます。

CentOS / RHEL 7 でカーネル パラメータを永続的に設定する

CentOS/RHEL 7 でカーネル パラメータを設定する方法は、以前のバージョンとは少し異なります。 /etc/sysctl.d/ の下に新しい conf ファイルを作成します。 ディレクトリ。ファイル名の形式は /etc/sysctl.d/[name].conf です。 /etc/sysctl.d/ ディレクトリ内のファイルは順番に解析されるため、ファイルを解析する順序を示す番号をファイル名の先頭に追加することをお勧めします。たとえば、/etc/sysctl.d/ 01-custom.conf:

# cat /etc/sysctl.d/01-custom.conf
net.ipv4.ip_forward=1
net.ipv4.ip_local_port_range="1025 65535"

新しい/更新された /etc/sysctl.d ファイルの値をシステムにすぐに適用させるには、sysctl -p [ファイル名] を実行します。

# sysctl -p /etc/sysctl.d/01-custom.conf


Cent OS
  1. CentOS/RHELおよびFedoraにPython3.5をインストールする方法

  2. CentOS / RHEL 7 :カーネル コマンド ラインを変更する方法

  3. CentOS/RHEL で lxcbr0 と virbr0 を使用して LXC コンテナーを作成する方法

  1. CentOS / RHEL 7 :timedatectl を使用して日付、時刻 / NTP およびタイムゾーンを設定する方法

  2. CentOS/RHEL 5 および 6 で postifx smtp リレーを構成する方法

  3. CentOS/RHEL でカーネル チューニング パラメータの現在の値を確認する方法

  1. RHEL 8 /CentOS8にsambaをインストールして設定する方法

  2. CentOSおよびRHELでEPELリポジトリを有効にする方法

  3. CentOS/RHEL 7 および 8 で nmcli を使用してブリッジ インターフェイスを作成する方法