SYSCTL(8)

名称
sysctl - カーネル状態の取得や設定

書式
sysctl [-n] name ...
sysctl [-n] -w name=value ...
sysctl [-n] -aA

解説
sysctl はカーネル状態を取り出し、適切な権限があれば プロセスがカーネル状態を設定することを許します。取り出されたり、 設定されたりした状態は、``Management Information Base'' (``MIB'') 形式を使って記述されます。この形式では、要素はドット ``.'' で接続されます。 -a を使うと、現在有効な文字列や整数値をすべて表示します。 -A では、カーネル内部のテーブルに含まれている既知の MIB 名のすべてを表示します。 -a を使うと、 現在設定されている文字列や整数値が表示されますが、テーブル の値を得た場合には、実際の値を取り出すために使うコマンドの 名前が表示されます。

-n をつけると、フィールド名の出力は抑制されて、値だけが表示されます。 これはシェル変数を設定するのに役に立ちます。 たとえば、ページサイズを変数psizeに保存するには、以下のようにします:

        set psize=`sysctl -n hw.pagesize`

MIB 形式の name だけを指定すると、その名前に対応する値が得られます。値を設定するには -w を指定し、MIB 名のあとにイコール記号 ``='' をつけて、そのあとに設定する 新しい値を指定します。

sysctl で有効な情報は、整数、文字列、テーブルです。 テーブルの情報は、 ps や systat , netstat などの特別な目的のプログラムだけが取り出すことができます。 文字列と整数情報は、以下に簡単にまとめています。これらの 変数の詳細な説明は、 sysctl(3) を参照してください。 changeable の列は、適切な権限を持つプロセスがその値を変更 できるかどうかを示しています。

Name Type Changeable
kern.ostype string no
kern.osrelease string no
kern.osrevision integer no
kern.version string no
kern.maxvnodes integer yes
kern.maxproc integer yes
kern.maxfiles integer yes
kern.argmax integer no
kern.securelevel integer raise only
kern.hostname string yes
kern.hostid integer yes
kern.clockrate struct no
kern.posix1version integer no
kern.ngroups integer no
kern.job_control integer no
kern.saved_ids integer no
kern.link_max integer no
kern.max_canon integer no
kern.max_input integer no
kern.name_max integer no
kern.path_max integer no
kern.pipe_buf integer no
kern.chown_restricted integer no
kern.no_trunc integer no
kern.vdisable integer no
kern.boottime struct no
vm.loadavg struct no
machdep.console_device dev_t no
net.inet.ip.forwarding integer yes
net.inet.ip.redirect integer yes
net.inet.ip.ttl integer yes
net.inet.icmp.maskrepl integer yes
net.inet.udp.checksum integer yes
hw.machine string no
hw.model string no
hw.ncpu integer no
hw.byteorder integer no
hw.physmem integer no
hw.usermem integer no
hw.pagesize integer no
user.cs_path string no
user.bc_base_max integer no
user.bc_dim_max integer no
user.bc_scale_max integer no
user.bc_string_max integer no
user.coll_weights_max integer no
user.expr_nest_max integer no
user.line_max integer no
user.re_dup_max integer no
user.posix2_version integer no
user.posix2_c_bind integer no
user.posix2_c_dev integer no
user.posix2_char_term integer no
user.posix2_fort_dev integer no
user.posix2_fort_run integer no
user.posix2_localedef integer no
user.posix2_sw_dev integer no
user.posix2_upe integer no

  使用例

•   たとえば、システム中で許されている最大のプロセス数を知りたいときは、 以下のようにします:

        sysctl kern.maxproc

•   システム中で許されている最大のプロセス数を 1000 に設定する するには、以下のようにします:

        sysctl -w kern.maxproc=1000

•   システムのクロックレートに関する情報を得るには、以下の ようにします:

        sysctl kern.clockrate

•   システム負荷 (ロードアベレージ) の履歴に関する情報を得るには、 以下のようにします:

        sysctl vm.loadavg

関連ファイル
<sys/sysctl.h>
    トップレベルの識別子と第 2 レベルのカーネル及び、 ハードウェアの識別子とユーザレベルの識別子の定義
<sys/socket.h>
    第 2 レベルのネットワーク識別子の定義
<sys/gmon.h>
    第 3 レベルのプロファイル識別子の定義
<vm/vm_param.h>
    第 2 レベルの仮想メモリ識別子の定義
<netinet/in.h>
    第 3 レベルのインターネット識別子と第 4 レベルの IP 識別子の定義
<netinet/icmp_var.h>
    第 4 レベルの ICMP 識別子の定義
<netinet/udp_var.h>
    第 4 レベルの UDP 識別子の定義

関連項目
sysctl(3)

歴史
sysctl は 4.4BSD ではじめて登場しました。