SYSCTL(8) | FreeBSD System Manager's Manual | SYSCTL(8) |
名称
sysctl — カーネル状態の取得や設定書式
sysctl | [ -bdehiNnoRTqx][ -f filename] name[ = value] ... |
sysctl | [ -bdehNnoRTqx] -a |
解説
sysctl は、カーネル状態を取り出し、適切な権限があればプロセスがカーネル状態を設定することを許します。取り出されたり、設定されたりした状態は、“Management Information Base” (“MIB”) 形式を使って記述されます。この形式では、要素は、ドット ``.'' で接続されます。次のオプションが使用可能です:
- -A
- -o -a と等価です (互換性用)。
- -a
- 現在利用可能な、データ形式を知らないもの (以下、形式不明の変数と称する) でない値を列挙します。 1 個以上の変数名がコマンドラインに指定された場合、本オプションは、無視されます。
- -b
- 変数の値を加工せずに、バイナリ形式で表示します。変数名や、最後の改行文字は、出力されません。これは、単一の変数に対して操作する際に便利でしょう。
- -d
- 変数の値の代りに解説を表示します。
- -e
-
変数の名前と値を、‘
=
’で区切ります。 sysctl ユーティリティにフィードバック可能な出力を生成するために有用です。 -N または -n が指定される場合、または変数が設定される場合、本オプションは、無視されます。 - -f filename
- 各行に名前と値のペアを含んでいるファイルを指定します。 sysctl は、最初に指定されたファイルを読み込んで処理し、次に、コマンド行の引数の名前と値のペアを処理します。
- -h
- マシンが読み易いフォーマットではなく、人間が読み易いフォーマットで出力します。
- -i
- 未知の OID を無視します。目的は、さまざまなマシン (正確に同じソフトウェアを必ず実行するわけではない) からより簡単にデータを収集ために sysctl を使用することです。
- -N
-
値の出力は、抑制されて、変数名のみを表示します。プログラム可能な補完機能を持つシェルで、有用です。
zsh(1) (
ports/shells/zsh) で変数名を補完するには、次のコードを使用します:
listsysctls () { set -A reply $(sysctl -AN ${1%.*}) } compctl -K listsysctls sysctl
tcsh(1) で変数名を補完するには、次のようにします:
complete sysctl 'n/*/`sysctl -Na`/'
- -n
-
変数名の出力は、抑制されて、値だけが表示されます。これは、シェル変数を設定するのに役に立ちます。たとえば、ページサイズを変数
psize に保存するには、以下のようにします:
set psize=`sysctl -n hw.pagesize`
- -o
- 形式不明な値を表示します (通常は、抑制されます)。書式と長さが表示され、値の最初の 16 バイトが 16 進数でダンプされます。
- -q
- sysctl によって標準エラーに生成されるいくつかの警告を抑制します。
- -T
- ローダ (CTLFLAG_TUN) によって設定することができる変数だけを表示します。
- -W
- 統計値でない書き込み可能な変数だけを表示します。実行時調整変数の sysctl の組を決定するために役に立ちます。
- -X
- -x -a と等価です (互換性用)。
- -x
- -o と同様ですが、形式不明の変数の最初の数バイトの代りに全ての内容が 16 進数でダンプされます。
sysctl で得られる情報は、整数、文字列と形式不明のタイプから成ります。 sysctl ユーティリティは、いくつかの形式不明の変数の形式を知っているだけで、それ以外のものに対しては、16 進ダンプに頼ります。形式不明の変数の情報は、 ps(1), systat(1), netstat(1) などの特別な目的のプログラムによって取得された場合に、より効果的です。
通常のシステム動作中には、修正できない変数のいくつかは、 loader(8) チューナブルで修正可能です。例えば、これらを loader.conf(5) で設定することで実現できます。どのようなチューナブルが利用可能か、そしてそれらをどのように設定するのかという更なる情報については、 loader.conf(5) を参照してください。
文字列と整数の情報を簡単にまとめて以下に示します。これらの変数の詳細な説明は、 sysctl(3) を参照してください。
変更可能の列は、適切な権限を持つプロセスがその値を変更できるかどうかを示しています。 sysctl を使用して文字列と整数値を設定することができます。
名称 | 型 | 変更可能 |
kern.ostype | 文字列 | no |
kern.osrelease | 文字列 | no |
kern.osrevision | 整数 | no |
kern.version | 文字列 | no |
kern.maxvnodes | 整数 | yes |
kern.maxproc | 整数 | no |
kern.maxprocperuid | 整数 | yes |
kern.maxfiles | 整数 | yes |
kern.maxfilesperproc | 整数 | yes |
kern.argmax | 整数 | no |
kern.securelevel | 整数 | 増やすのみ |
kern.hostname | 文字列 | yes |
kern.hostid | 整数 | yes |
kern.clockrate | struct | no |
kern.posix1version | 整数 | no |
kern.ngroups | 整数 | no |
kern.job_control | 整数 | no |
kern.saved_ids | 整数 | no |
kern.boottime | struct | no |
kern.domainname | 文字列 | yes |
kern.filedelay | 整数 | yes |
kern.dirdelay | 整数 | yes |
kern.metadelay | 整数 | yes |
kern.osreldate | 文字列 | no |
kern.bootfile | 文字列 | yes |
kern.corefile | 文字列 | yes |
kern.logsigexit | 整数 | yes |
security.bsd.suser_enabled | 整数 | yes |
security.bsd.see_other_uids | 整数 | yes |
security.bsd.unprivileged_proc_debug | 整数 | yes |
security.bsd.unprivileged_read_msgbuf | 整数 | yes |
vm.loadavg | struct | no |
hw.machine | 文字列 | no |
hw.model | 文字列 | no |
hw.ncpu | 整数 | no |
hw.byteorder | 整数 | no |
hw.physmem | 整数 | no |
hw.usermem | 整数 | no |
hw.pagesize | 整数 | no |
hw.floatingpoint | 整数 | no |
hw.machine_arch | 文字列 | no |
hw.realmem | 整数 | no |
machdep.adjkerntz | 整数 | yes |
machdep.disable_rtc_set | 整数 | yes |
machdep.guessed_bootdev | 文字列 | no |
user.cs_path | 文字列 | no |
user.bc_base_max | 整数 | no |
user.bc_dim_max | 整数 | no |
user.bc_scale_max | 整数 | no |
user.bc_string_max | 整数 | no |
user.coll_weights_max | 整数 | no |
user.expr_nest_max | 整数 | no |
user.line_max | 整数 | no |
user.re_dup_max | 整数 | no |
user.posix2_version | 整数 | no |
user.posix2_c_bind | 整数 | no |
user.posix2_c_dev | 整数 | no |
user.posix2_char_term | 整数 | no |
user.posix2_fort_dev | 整数 | no |
user.posix2_fort_run | 整数 | no |
user.posix2_localedef | 整数 | no |
user.posix2_sw_dev | 整数 | no |
user.posix2_upe | 整数 | no |
user.stream_max | 整数 | no" |
user.tzname_max | 整数 | no |
関連ファイル
- < 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 kern.maxproc
システム中で許されている最大のプロセス数を 1000 に設定するには、以下のようにします:
sysctl kern.maxprocperuid=1000
システムのクロックレートに関する情報を得るには、以下のようにします:
sysctl kern.clockrate
システム負荷 (ロード・アベレージ) の履歴に関する情報を得るには、以下のようにします:
sysctl vm.loadavg
ここに挙げたもの以外の変数も存在します。それらに関するより深い意味を知るもっとも良く、かつ、おそらく唯一の方法は、それらを定義しているソースコードをみる事であることは疑いのない事実でしょう。
互換性
-w オプションは、推奨されておらず、黙って無視されます。歴史
sysctl ユーティリティは、 4.4BSD ではじめて登場しました。FreeBSD 2.2 の sysctl は、著しく改良されています。
バグ
現状では、 sysctl ユーティリティは、sysctl ツリーの追跡、および、形式と名前の情報を得る際に、文書化されていないカーネルの sysctl 機能へのインタフェースを使用しています。この方法に関する正しいインタフェースは、現在検討中です。December 13, 2012 | FreeBSD |