EN JA
LIMITS(1)
LIMITS(1) FreeBSD General Commands Manual LIMITS(1)

名称

limitsプロセスリソースの制限を設定するか、または表示する

書式

limits [ -C class | -P pid | -U user][ -SHB][ -ea][ -bcdfklmnstuvpw [ val]]

limits [ -C class | -U user][ -SHB][ -bcdfklmnstuvpw [ val]][ -E][ [ name= value ...] command]

解説

limits ユーティリティは、カーネルのリソースの制限を印刷するか、または設定し、オプションで、 env(1) のような環境変数を設定し、選択されたリソースでプログラムを実行します。 limits ユーティリティの 3 つの用途は、次を可能とします:
limits [ limitflags][ name= value ...] command
この使い方では、 limitflags にしたがって制限をセットし、オプションで name= value のペアで与えられた環境変数をセットし、指定された command を実行します。
limits [ limitflags]
この使い方では、リソースの設定の値は、実際には設定せずに、設定値を limitflags にしたがって決定し、標準出力に出力します。デフォルトでは、呼び出しプロセスにおいて有効な現在のカーネルのリソースの設定値を出力します。 -C class-U user オプションを使うと、ログイン能力データベース login.conf(5) で設定されているログインクラスのリソース制限エントリによって変更された現在のリソース設定を表示します。
limits -e [ limitflags]
この使い方では、 limitflags にしたがってリソースの設定値を決定しますが、実際には設定は行ないません。前の使い方のように、これらの設定値を標準出力しますが、シェルをコールするのに都合の良いように eval の形式で出力します。もし、シェルが判明すると (すなわち sh, csh, bash, tcsh, ksh, pdksh または rc のいずれか)、 limits は、 limit または ulimit コマンドをそのシェルが解釈できるフォーマットで出力します。シェル名が決定できなかった場合は、 sh(1) によって使われる ulimit 形式で出力します。

これは、スクリプトで制限を設定したり、デーモンや他のバックグラウンドタスクをリソースを制限して起動したりする場合に非常に便利な機能です。また、ログインクラスデータベースを設定し中央データベースを保守することにより、最大使用リソースをグローバルに設定することができるという利点があります。

limits は、通常シェルスクリプト中では、次のようにバッククォーテーションに囲み評価するようにして使われます。

eval `limits -e -C daemon`

これで limits の出力が評価され、現在のシェルで設定されます。

上記の中で指定された limitflags の値には、以下のオプションのうちの 1 つ以上のものが含まれます:

-C class
ログインクラス class のために適用可能なリソースエントリによって修正され、現在のリソースの値を使用します。
-U user
user が属するログインクラスに適用可能なリソースエントリによって修正され、現在のリソースの値を使用します。ユーザがどんなクラスにも属していないなら、“ default”のクラスのためのリソーズケーパビリティが使用され、それが存在するなら、またはユーザがスーパユーザのアカウントであるなら、“ root”クラスが使用されます。
-P pid
pid によって識別されるプロセスのための制限を選択するか設定します。
-S
“soft” (または現在の) リソースの制限を表示、または設定を選択します。特有の制限の設定が、このスイッチに続き、 -H または -B オプションのいずれかでオーバライドされないなら、soft 制限だけが影響されます。
-H
“hard” (または最大) のリソーズの制限の表示または設定を選択します。特定の制限の設定がこのスイッチに続くなら、ハードの制限だけは、 -S または -B オプションにいずれかで後で上書きされない限り、影響されます。
-B
“soft” (現在) または“hard” (最大) のリソーズ制限の両方の表示または設定を選択します。特定の制限の設定がこのスイッチに続くなら、ソフトとハードの両方の制限は、 -S または -H オプションのいずれかで後で上書きされない限り、影響されます。
-e
出力を“eval mode” (評価モード) の書式にします。これは、表示モードでのみ有効であり、コマンドを実行するときには使えません。出力に使用される正確なシンタックスは、 limits が起動されたシェルのタイプに依存します。
-b [ val]
sbsize 資源制限を選択または設定します。
-c [ val]
coredumpsize のリソースの制限を選択、または設定 ( val が指定された場合) します。値に 0 を指定するとコアダンプしないようになります。
-d [ val]
datasize のリソースの制限を選択、または設定 ( val が指定された場合) します。
-f [ val]
filesize のリソースの制限を選択、または設定します。
-k [ val]
kqueues のリソースの制限を選択するか、または設定します。
-l [ val]
memorylocked のリソースの制限を選択するか、または設定します。
-m [ val]
memoryuse のサイズの制限を選択するか、または設定します。
-n [ val]
openfiles のリソースの制限を選択するか、または設定します。 kern.maxfilesperproc sysctl(8) 変数を検査することによって、プロセスごとにオープンされたファイルの最大数のシステム全体の制限を見ることができます。システム全体で同時にオープンされるファイルの合計数は、 kern.maxfiles sysctl(8) 変数によって表示される値に制限されます。
-s [ val]
stacksize のリソースの制限を選択するか、または設定します。
-t [ val]
cputime のリソースの制限を選択するか、または設定します。
-u [ val]
maxproc のリソースの制限を選択するか、または設定します。 kern.maxprocperuid sysctl(8) 変数を検査することによって UID ごとに許可されたプロセスの最大数のシステム全体の制限を見ることができます。システム全体で同時に実行することができるプロセスの最大数は、 kern.maxproc sysctl(8) 変数の値に制限されます。
-v [ val]
virtualmem のリソースの制限を選択するか、または設定します。ユーザプロセスのための VM 空間全体を含むこの制限は、テキスト、データ、BSS、スタック、 brk(2), sbrk(2)mmap(2) される空間を含みます。
-p [ val]
pseudoterminal (疑似端末) のリソースの制限を選択するか、または設定します。
-w [ val]
swapuse のリソースの制限を選択するか、または設定します。

上記のオプションのセットにおける有効な val の値は、無限値 (またはカーネルにおいて定義されている最大値) を設定する場合は、文字列“ infinity”, “ inf”, “ unlimited”または“ unlimit”のいずれかを指定し、それ以外の場合は、接尾辞つきの数字を指定します。サイズに関する値は、デフォルトでは、バイトでの値となります。また以下の接尾辞の 1 つを付けることによってその単位となります。

b
512 バイトブロック。
k
キロバイト (1024 バイト)。
m
メガバイト (1024*1024 バイト)。
g
ギガバイト。
t
テラバイト。

cputime リソースについては、デフォルトでは、秒による値となります。また以下の接尾辞を付加することにより、それぞれの単位で指定可能です。有効な複数の単位指定を並べると、その和を指定したことになります:

s
秒。
m
分。
h
時間。
d
日。
w
週。
y
365 日の年。
-E
limits は、継承している環境を完全に無視します。
-a
特定のリソースの設定が指定されていても、全てのリソースの設定を表示させます。例えば、USENET ニュースシステムの立ち上げ時にコアダンプを無効にしたいが、“ news”アカウントに適用されるその他の全てのリソースの設定を行ないたい場合は、次のように使います:

eval `limits -U news -aBec 0`

setrlimit(2) コールのように、スーパユーザのみが“hard”リソース制限を引き上げることができます。 root 以外のユーザは、それを引き下げるか、リソースの“soft”制限を hard 制限の範囲で変更することができます。プログラムを実行する場合、 limits が hard 制限を引き上げようとすると、それは、致命的エラーとして扱われます。

終了ステータス

limits ユーティリティは、ユーザが何らかの方法で誤使用をすると EXIT_FAILURE で終了します。誤使用には、不正なオプションを使用した場合や、同時に設定と表示のオプションを指定した場合、または -e がプログラムを起動する時に使われた場合などが含まれます。表示モードまたは評価モードにて実行されたとき、 limits は、 EXIT_SUCCESS の終了ステータスで終了します。コマンドモードで実行されコマンドの実行が成功したときには、終了ステータスは、実行されたプログラムが返すものになります。

バグ

limits ユーティリティは、明白な理由で、それらの名前の等号 (‘ =’) でコマンドを扱いません。

limits ユーティリティは、出力された、または表示されたリソースの設定が有効であり、現在のユーザによって設定可能であることを保証する努力を行ないません。スーパユーザのアカウントだけが、ハードの制限を上げることができ、そうするとき、 FreeBSD カーネルは、与えられた値が高すぎるなら、指定された値未満に制限を静かに下げます。

January 23, 2012 FreeBSD