Linuxコマンド辞典 sysctlコマンド(システム管理)

稼働システムのカーネルパラメータを表示/変更する「sysctl」コマンドの概要と使い方を記載しています。

RHEL Fedora CentOS Vine Deblan Ubuntu Plamo

参考サイト:Man page of INSTALL

概要・使用方法

書式

$ sysctl [オプション]

カーネルのパラメータの出力や設定を行います。システム稼働中のカーネルパラメータは、/proc/sys以下にテキストファイルで表現されています。これらのパラメータを変更するために利用します。カーネルパラメータは「/proc/sys/」以下に、net/ipv6/conf/default/accept_raのようなファイルで記述されます。指定する際は「/」を[.]に変更し、net.ipv6.conf.default.accept_raとしても通用します。sysctlで設定した内容はOSをシャットダウン-再起動するまで適用されます。再起動してもパラメータを保持したい場合は、/etc/sysctl.confに記述するか、/etc/sysctl.d/以下に「.conf」拡張子のファイルを用意して変数設定を用意します。

コマンドは、管理者権限で実行する必要があります。

オプション

-e
–ignore
エラーを表示しない
-n 変数名
–values 変数名
指定した変数の値のみを表示する
-N 変数名
–names 変数名
変数名のみを表示する
-w 変数名=パラメータ
–write
変数を設定する
-p [ファイル]
–load[=ファイル]
ファイルが指定されていればそれを変数リストとして読み込む、指定がなければ「/etc/sysctl.conf」を読み込む。「-」を指定すると標準入力を利用する。
-a指定されたパラメータすべてを表示する
-q
–quiet
変数に値を設定した際の出力をしない
-b
–binary
値のみを改行せずに出力する
–system設定ファイルを読み込み直す
-r 正規表現
–pattern 正規表現
正規表現にマッチした行を出力する

設定されているパラメータをすべて表示する

$ sysctl -a
$ sudo sysctl -a

実行結果

[root@localhost ~]# sysctl -a
abi.vsyscall32 = 1
crypto.fips_enabled = 0
debug.exception-trace = 1
debug.kprobes-optimization = 1
dev.cdrom.autoclose = 1
dev.cdrom.autoeject = 0
dev.cdrom.check_media = 0
dev.cdrom.debug = 0
dev.cdrom.info = CD-ROM information, Id: cdrom.c 3.20 2003/12/17
・
・
・

sudoを使用した場合。

[sunarin@localhost ~]$ sudo sysctl -a
abi.vsyscall32 = 1
crypto.fips_enabled = 0
debug.exception-trace = 1
debug.kprobes-optimization = 1
dev.cdrom.autoclose = 1
dev.cdrom.autoeject = 0
dev.cdrom.check_media = 0
dev.cdrom.debug = 0
・
・
・

設定されているパラメータを特定して表示する

$ sysctl net.ipv6.conf.eth0.accept_ra

実行結果

[root@localhost conf]#  sysctl net.ipv6.conf.eth0.accept_ra
net.ipv6.conf.eth0.accept_ra = 0

パラメータを指定して設定する

$ sysctl -w net.ipv6.conf.eth0.accept_ra=1

実行結果

[root@localhost conf]#  sysctl -w net.ipv6.conf.eth0.accept_ra=1
net.ipv6.conf.eth0.accept_ra = 1
[root@localhost conf]#  sysctl net.ipv6.conf.eth0.accept_ra
net.ipv6.conf.eth0.accept_ra = 1
[root@localhost conf]# 

正規表現を利用して変数を表示する

$ sysctl net.ipv6.conf.eth0.accept_ra

実行結果

[root@localhost conf]#  sysctl -a -r net.ipv6.conf.all.\(accept_ra$\|forwarding\)
net.ipv6.conf.all.accept_ra = 1
net.ipv6.conf.all.forwarding = 0
[root@localhost conf]# 

/etc/sysctl.conf以外のファイルを読み込んでパラメータを設定する

$ sysctl -p ./tmp_sysctl.conf

実行結果

[root@localhost ~]#  sysctl net.ipv6.conf.eth0.accept_ra
net.ipv6.conf.eth0.accept_ra = 0
[root@localhost ~]# sysctl -p ./tmp_sysctl.conf 
net.ipv6.conf.eth0.accept_ra = 1
[root@localhost ~]#  sysctl net.ipv6.conf.eth0.accept_ra
net.ipv6.conf.eth0.accept_ra = 1