sysctl(8) FreeBSD 一般コマンドマニュアル

sysctl

前のページ 上に戻る 次のページ

sysctl


     sysctl [-bNnox] -a


解説

     sysctl はカーネル状態を取り出し、適切な権限があればプロセスがカーネル状態
     を設定することを許します。取り出されたり、設定されたりした状態は、
     (Management Information Base) (``MIB'') 形式を使って記述されます。この形
     式では、要素はドット ``.'' で接続されます。

     以下のオプションを使用可能です:

     -A      -o -a と等価です (互換性用)。

     -a      現在利用可能な、データ形式を知らないもの(以下、形式不明の変数と称
             する) でない値を列挙します。 1 個以上の変数名がコマンドラインに指
             定された場合、本オプションは無視されます。

     -b      変数の値を加工せずに、バイナリ形式で表示します。変数名や、最後の
             改行文字は出力されません。これは、単一の変数に対して操作する際に
             便利でしょう。

     -N      値の出力は抑制されて、変数名のみを表示します。プログラム可能な補
             完機能を持つシェルで、有用です。 zsh で変数名を補完するには、次の
             コードを使用します:

                   listsysctls () { set -A reply $(sysctl -AN ${1%.*}) }
                   compctl -K listsysctls sysctl

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

     -o      形式不明な値を表示します (通常は抑制されます)。書式と長さが表示さ
             れ、値の最初の 16 バイトが 16 進数でダンプされます。

     -X      -x -a と等価です (互換性用)。

     -x      -o と同様ですが、形式不明の変数の最初の数バイトの代りに全ての内容
             が 16 進数でダンプされます。
     sysctl で得られる情報は、整数、文字列、形式不明の変数です。 sysctl はいく
     つかの形式不明の変数の形式を知っているだけで、それ以外のものに対しては 16
     進ダンプに頼ります。形式不明の変数の情報は、 ps, systat, netstat などの特
     別な目的のプログラムによって取得された場合に、より効果的です。

     文字列と整数の情報を簡単にまとめて以下に示します。これらの変数の詳細な説
     明は、 sysctl(3) を参照してください。

     変更可能の列は、適切な権限を持つプロセスがその値を変更できるかどうかを示
     しています。

     B>名B>称                            B>型            B>変B>更B>可B>能
     kern.ostype                     文字列        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
     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
     machdep.console_device          dev_t         no
     machdep.adjkerntz               整数          yes
     machdep.disable_rtc_set         整数          yes
     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


使用例

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

           sysctl kern.maxproc

     ここに挙げたもの以外の変数も存在します。それらに関するより深い意味を知る
     もっとも良く、かつ、おそらく唯一の方法は、それらを定義しているソースコー
     ドをみる事であることは疑いのない事実でしょう。


関連ファイル

     <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 識別子の定義


互換性

     -w オプションは推奨されておらず、黙って無視されます。


関連項目

     sysctl(3), sysctl.conf(5)


バグ

     現状では sysctl は、sysctl ツリーの追跡、および、形式と名前の情報を得る際
     に、文書化されていないカーネルの sysctl 機能へのインタフェースを使用して
     います。この方法に関する正しいインタフェースは、現在検討中です。


歴史

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

     FreeBSD 2.2 の sysctl は著しく改良されています。

FreeBSD 4.4                      May 28, 2001                      FreeBSD 4.4

ABELNET VPSサービス