LIMITS(1)

名称
limits - リソースの制限値の設定および表示

書式
limits [-C class | -U user] [-SHB] [-ea] [-bcdflmnstuv [val]] limits [-C class | -U user] [-SHB] [-bcdflmnstuv [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 の形式で出力します。 コールされるシェルは、親プロセスの /proc ファイルシステム中のエントリを調べて決定されます。 もし、シェルが判明すると (すなわち 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 が属するログインクラスに適用される リソースエントリによって変更したものを使います。 user がどのクラスにも属していない場合、 “default” クラスが存在すればそ のリソース能力が使用され、もしそのユーザがスーパユーザアカウントであれ ば、 “root” クラスが使用されます。

-S  リソースの “soft” (もしくは現在の) 制限を表示もしくは設定します。 このスイッチに続いて指定される制限の設定は、 -H や -B オプションでオーバライドしない限り、soft リミットに対する設定となります。

-H  リソースの “hard” (もしくは最大の) 制限を表示もしくは設定します。 このスイッチに続いて指定される制限の設定は、 -S や -B オプションでオーバライドしない限り、hard リミットに対する設定となります。

-B  リソースの “soft” (現在の) および “hard” (最大の) 制限を表示もしくは設定します。 このスイッチに続いて指定される制限の設定は、 -S や -H オプションでオーバライドしない限り、soft リミットおよび hard リミットの 両者に対する設定となります。

-e  出力を “eval mode” (評価モード) の書式にします。 これは表示モードでのみ有効であり、コマンドを実行するときには使えません。 出力に使用される正確なシンタックスは limits が起動されたシェルのタイプに依存します。

-b [val]
    sbsize 資源制限を選択または設定します。

-c [val]
    coredumsize のリソースの制限を選択もしくは設定 (val が指定された場合) します。 値に 0 を指定するとコアダンプしないようになります。

-d [val]
    datasize のリソースの制限を選択もしくは設定 (val が指定された場合) します。

-f [val]
    filesize のリソースの制限を選択もしくは設定します。

-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 のリソースの制限を選択もしくは設定します。 UID ごとの最大プロセス数のシステムワイドの制限は、 kern.maxprocperuid sysctl(8) 変数を検査することで表示できます。 システム全体で同時に走行できるプロセスの総数は、 kern.maxproc sysctl(8) 変数の値に制限されます。

-v [val]
    virtualmem のリソースの制限を選択もしくは設定します。 当該ユーザプロセスが使用可能な VM 空間全体を制限し、 これには、テキスト、データ、BSS、スタック、 brk(2), sbrk(2) mmap(2) される空間が含まれます。

上記のオプションのセットにおける有効な 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 の終了ステータスで終了します。 コマンドモードで実行されコマンドの実行が成功したときには、終了ステータスは 実行されたプログラムが返すものになります。

関連項目
csh(1), env(1), limit(1), sh(1), getrlimit(2), setrlimit(2), login_cap(3), login.conf(5), sysctl(8)

バグ
明らかな理由により、 limits ユーティリティは、 等号 (‘=’) がその名称に含まれるコマンドを扱うことができません。

評価用の出力が選択された場合、シェルを正しく認識し、そのシェルにとって 出力が正しいシンタックスとなるためには、 /proc ファイルシステムがインストールされマウントされていなければなりません。 デフォルトの出力は sh(1) にとって有効なものとなります。そのため、 /proc マウント前に limits を使用できるのは、標準の bourne シェルスクリプト中でのみとなります。

limits ユーティリティは、 出力や表示するリソースの設定が現在のユーザで有効であるかや、設定可能 であるかについては確認を行ないません。スーパユーザアカウントのみが hard リミットを引き上げることができます。与えられた値が大きすぎる場合は FreeBSD カーネルは何も出力せずにその制限値を指定された値より低く設定します。