LIMITS(1)

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

書式
limits [-C class] [-SHB] [-ea] [-cdflmnstu [val]] limits [-C class] [-SHB] [-cdflmnstu [val]] [-E] [name=value ...] [command] limits [-U user] [-SHB] [-ea] [-cdflmnstu [val]] limits [-U user] [-SHB] [-cdflmnstu [val]] [-E] [name=value ...] [command]

解説
limits はカーネルのリソース制限の表示および設定を行ないます。また、 env(1) のように環境変数を設定して、プログラムを選択したリソースで動作させるこ ともできます。 limits コマンドは以下の 3 通りの使い方ができます:

limits [limitflags]
    [name=value] command

    この使い方では limitflags にしたがって制限をセットし、オプションで name=value のペアで与えられた環境変数をセットし、指定されたコマンドを実行します。

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' コマンドをそのシェルが解釈できるフォーマットで 出力します。シェル名が決定できなかった場合は、 /bin/sh によって使われる '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 が起動されたシェルのタイプに依存します。

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

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

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

-l [limit]
    memorylocked のリソースの制限を選択もしくは設定します。

-m [limit]
    memoryuse のサイズの制限を選択もしくは設定します。

-n [limit]
    openfiles のリソースの制限を選択もしくは設定します。

-s [limit]
    stacksize のリソースの制限を選択もしくは設定します。

-t [limit]
    cputime のリソースの制限を選択もしくは設定します。

-u [limit]
    maxproc のリソースの制限を選択もしくは設定します。

    上記のフラグのセットにおける有効な 'limit' の値は、無限値 (もしくは カーネルにおいて定義されている最大値) を設定する場合は文字列 'infinity' もしくは 'inf' を指定し、それ以外の場合は接尾子つきの数字を指定しま す。サイズに関する値はデフォルトではバイトでの値となります。また以下の 接尾子の 1 つを付けることによってその単位となります。

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

    cputime リソースについてはデフォルトでは秒による値となります。 また以下の接尾子を付加することにより、それぞれの単位で指定可能です。 有効な複数の単位指定を並べると、その和を指定したことになります:
    s   秒。
    m   分。
    h   時間。
    d   日。
    w   週。
    y   年 (365 日)。

-E  ‘-E’ オプションを使用すると limits は継承している環境を完全に無視します。

-a  このオプションは特定のリソースの設定が指定されていても、 全てのリソースの設定を表示させます。 例えば、USENET ニュースシステムの立ち上げ時にコアダンプを無効にしたい が、'news' アカウントに適用されるその他の全てのリソースの設定を行ない たい場合は、次のように使います:

        eval `limits -U news -aBec 0`

    setrlimit(3) コールのように、スーパユーザのみが "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)

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

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

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