日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.3-RELEASE-K, 13.0-RELEASE-K から 13.2-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
GETRLIMIT(2) FreeBSD システムコールマニュアル GETRLIMIT(2) 名称 getrlimit, setrlimit -- 最大のシステムリソースの消費を制御する ライブラリ 標準 C ライブラリ (libc, -lc) 書式 #include <sys/types.h> #include <sys/time.h> #include <sys/resource.h> int getrlimit(int resource, struct rlimit *rlp); int setrlimit(int resource, const struct rlimit *rlp); 解説 現在のプロセスとそれが作成する各プロセスによるシステムリソースの消費の制 限は、getrlimit() システムコールで取得され、setrlimit() システムコールで 設定します。 resource 引数は、次のうちの 1 つです: RLIMIT_AS プロセスがマップすることを許可される仮想メモリの (バイト 単位の) 最大量。 RLIMIT_CORE 作成される core(5) ファイルの (バイト単位の) 最大サイズ。 RLIMIT_CPU 各プロセスによって使用される (秒単位の) CPU 時間の最大 量。 RLIMIT_DATA プロセスのためのデータセグメントの (バイト単位の) 最大サ イズ。これは、プログラムが sbrk(2) 関数でそのブレーク (break) をどこまで拡張できるかを定義します。 RLIMIT_FSIZE 作成される最も大きなサイズ (バイト単位の) のファイル。 RLIMIT_KQUEUES このユーザ id が作成することを許可する kqueue の最大の 数。 RLIMIT_MEMLOCK プロセスが、mlock(2) システムコールを使用してメモリにロッ クされる最大の (バイト単位の) サイズ。 RLIMIT_NOFILE このプロセスのためにオープンされるファイルの最大数。 RLIMIT_NPROC このユーザ ID のために同時に存在するプロセスの最大数。 RLIMIT_NPTS このユーザ id が作成することを許可する疑似端末の最大の 数。 RLIMIT_RSS メモリプレッシャがあり、スワップが利用可能なとき、(バイト 単位の) この量を越えるプロセスの常駐しているページの立ち 退きに優先度を付けます。メモリがプレッシャの下にないと き、この rlimit は、効果的に無視されます。メモリプレッ シャがあるときでさえ、vm.swap_enabled と vm.swap_idle_enabled のような利用可能なスワップ空間といく つかの sysctl 設定の量は、このサイズを越えていたプロセス に起こることに影響するかもしれません。 それらの設定 RLIMIT_RSS を越えるプロセスは、シグナルが起 こらず、停止しません。制限は、単に、それらの設定 RLIMIT_RSS を越えていたプロセスからページの活性化を解除す ることをを好む VM デーモンへのヒントです。 RLIMIT_SBSIZE このユーザのためのソケットバッファ使用の (バイト単位の) 最大のサイズ。これは、ネットワークのメモリの量を制限し、 そのため、このユーザがいつでも保持する mbufs の量です。 RLIMIT_STACK プロセスのためのスタックセグメントの (バイト単位の) 最大 のサイズ。これは、プログラムのスタックセグメントがどこま で拡張されるを定義します。スタックの拡張は、システムに よって自動的に実行されます。 RLIMIT_SWAP このユーザ ID のプロセスのすべてによって、予約されるか、 または使用されるスワップ空間の (バイト単位の) 最大サイ ズ。この制限は、vm.overcommit sysctl のビット 1 が設定さ れる場合にだけ、強行されます。この sysctl の完全な説明に ついては、tuning(7) を参照してください。 RLIMIT_VMEM RLIMIT_AS のためのエイリアス。 リソースの制限は、ソフト制限とハード制限として指定されます。ソフト制限を 越えているとき、プロセスは、シグナルを受け取るかどうか分かりません。例え ば、シグナルは、cpu 時間またはファイルサイズを越えているとき、生成されま すが、アドレス空間または RSS 制限を越えているなら、生成しません。ソフト制 限を越えているプログラムは、それがハード制限に到達するか、またはそれ自体 のリソース制限を修正するまで、実行を続けることができます。ハード制限に達 することでさえ、必ずしもプロセスを停止しません。例えば、RSS のハード制限 を越えているなら、何も起こりません。 rlimit 構造体は、リソースのハード制限とソフト制限を指定するために使用され ます。 struct rlimit { rlim_t rlim_cur; /* 現在の (ソフト) 制限 */ rlim_t rlim_max; /* rlim_cur のための最大値 */ }; スーパユーザだけが、最大の制限を引き上げることができます。他のユーザは、0 から rlim_max まで、または (不可逆的に) 下位の rlim_max に範囲内で rlim_cur を変更できます。 制限のための ``無限'' の値は、RLIM_INFINITY として定義されます。 この情報は、プロセスごとの情報で格納されるので、このシステムコールは、 シェルによって作成されたすべての将来のプロセスに影響するなら、シェルに よって直接実行されなければなりません。したがって、limit は、csh(1) の組み 込みコマンドです。 システムは、通常の方法で制限を越えるとき、データまたはスタック空間を拡張 することを拒否します。brk(2) 関数は、データ空間が制限に到達するなら、失敗 します。スタックの制限に到達するとき、プロセスは、セグメンテーションフォ ルト (SIGSEGV) を受け取ります。このシグナルがシグナルのスタックを使用して がハンドラによって捕獲されないなら、このシグナルは、プロセスを kill しま す。 大きなファイルを作成するファイル I/O 操作は、プロセスのソフト制限によっ て、書き込みが失敗し、シグナル SIGXFSZ が生成されます。これは、通常、プロ セスを終了しますが、捕獲されます。ソフト cpu 時間の制限を越えるとき、 SIGXCPU シグナルが、原因となるプロセスに送られます。 ほとんどの操作が、RLIMIT_AS のソフト制限によって許可されるより多い仮想メ モリが割り付けられるとき、操作は、ENOMEM で失敗し、シグナルは、上げられま せん。明らかな例外は、上で説明されたスタックの拡張です。スタック拡張が、 RLIMIT_AS のソフト制限によって許可されるより多い仮想メモリを割り付けるな ら、SIGSEGV シグナルが、配信されます。呼び出し側は、ハード制限までソフト アドレス空間の制限を上げるために解放し、割り付けをリトライします。 戻り値 成功して終了したときには値 0 を返します。そうでない場合、値 -1 が返され、 グローバル変数 errno にエラーを示す値が設定されます。 エラー getrlimit() と setrlimit() システムコールは、次の場合に失敗します: [EFAULT] rlp のために指定されたアドレスが、無効です。 [EPERM] setrlimit() に指定された制限が、最大の制限値を引き上げ るとしても、呼び出し側が、スーパユーザではありません。 関連項目 csh(1), quota(1), quotactl(2), sigaction(2), sigaltstack(2), sysctl(3), ulimit(3) 歴史 getrlimit() システムコールは、4.2BSD で登場しました。 FreeBSD 12.2 September 30, 2016 FreeBSD 12.2