limit, ulimit, unlimit - 現在のシェルとそのシェルから起動されたプロセスで利用できるシステムリソースの制限値を設定または取得
/usr/bin/ulimit [-f] [blocks]
ulimit [- [HS] [a | cdfnstv]]
ulimit [- [HS] [c | d | f | n | s | t | v]] limit
limit [-h] [resource [limit]]
unlimit [-h] [resource]
ulimit [-HSacdfnstv] [limit]
ulimit [-HSacdfmnpstv] [limit]
ulimit ユーティリティーは、シェルとその子プロセスに課せられる書き込み時のファイルサイズの制限値を、設定または報告します (ファイルサイズに関係なく読み取りは可能です)。適切な特権をもつプロセスのみ制限値を上げることができます。
Bourne シェルの組み込み関数 ulimit は、リソースの強い制限値また弱い制限値を表示または設定します。これらの制限値については getrlimit(2) の説明を参照してください。
limit を省略すると、ulimit は指定されている制限値を表示します。制限値は一度にいくつでも表示できます。–a オプションは制限値すべてを表示します。
limit 引数を指定すると、ulimit は指定されたフラグに対応する制限値をその引数の値に設定します。文字列 unlimited は、現在の制限値 (ある場合) の削除を要求します。ユーザーはだれでも、強い制限値以下の値に弱い制限値を設定できます。ユーザーはだれでも、強い制限値を下げることができます。適切な特権を持ったユーザーだけが、強い制限値を上げたり、削除したりできます。getrlimit(2) を参照してください。
–H オプションは強い制限値を表し、–S オプションは弱い制限値を表します。どちらのオプションも指定しない場合、ulimit は両方の制限値を設定し、弱い制限値を表示します。
次のオプションは、制限値を表示または設定するリソースを指定します。オプションを一切指定しないと、ファイルサイズ限界値を表示または設定します。
最大コアファイルサイズ (512 バイトブロック単位)
データセグメントまたはヒープの最大サイズ (K バイト単位)
最大ファイルサイズ (512 バイトブロック単位)
最大ファイル記述子に 1 を加えたもの
スタックセグメントの最大サイズ (K バイト単位)
最大 CPU 時間 (秒単位)
仮想メモリーの最大サイズ (K バイト単位)
C シェルの組み込み関数 limit は、現在のプロセス、またはそれが生成したすべてのプロセスについて、各プロセスが指定された resource を limit 以上消費しないよう制限します。文字列 unlimited は、現在の制限値 (ある場合) の削除を要求します。limit を省略すると、現在の制限値を出力します。resource を省略すると、すべての制限値を表示します。
現在の制限値ではなく強い制限値を使用します。強い制限値は現在の制限値を制限します。強い制限値を上げることができるのは特権ユーザーだけです。
resource として指定できるものは次のとおりです。
プロセス当たりの最大 CPU 使用時間 (秒)
最大の単一ファイル容量。ファイルシステムのサイズと機能に制限されます。df(1M) を参照してください。
K バイト単位のプロセスのヒープの最大サイズ。
プロセスの最大スタックサイズ。デフォルトのスタックサイズは 213 です。
最大コアダンプのファイルサイズ。ファイルシステムのサイズに制限されます。
ファイル記述子の最大数。システムで利用可能な最大制限値を 調べるには sysdef(1M) コマンドを実行してください。sysdef によって報告される値は 16 進数ですが、bc(1) コマンドを使って 10 進数に変換できます。
仮想記憶の最大サイズ
limit は数値で、次の単位を付加して指定することもできます。
(cputime の) 時間
n キロバイト。これは cputime を除くすべての値のデフォルト単位です。
nメガバイトまたは (cputime の) 分
(cputime の) 分と秒
unlimit は resource に関する制限値を削除します。resource が指定されないと、すべてのリソースの制限値が削除されます。リソース名の一覧については、前述の limit コマンドの説明を参照してください。
対応する強い制限値を削除します。これは特権ユーザーだけしか実行できません。
Korn シェルの組み込み関数 ulimit は、リソースの制限を表示または設定します。使用可能なリソースの制限を次に説明します。システムによっては、次に挙げたすべての資源の制限を提供していないこともあります。limit を指定すると、指定したリソースの制限値が設定されます。limit の値は、各リソースに対応した単位 (後述) の数値、または unlimited という文字列です。文字列 unlimited は、現在の制限値 (ある場合) の削除を要求します。–H と –S の両フラグは、リソースに対して強い制限値と弱い制限値のどちらを設定するかを表します。強い制限値は、いったん設定したらあとで値を上げることはできません。弱い制限値は、強い制限値を超えない範囲で値を上げることが可能です。–H も –S も省略すると、指定した制限値が強い制限と弱い制限の両方に適用されます。limit 引数を省略すると、現在のリソース制限値が表示されます。このとき、–H が指定された場合を除き、表示されるのは弱い制限値です。複数のリソースを指定すると、値の前に制限するリソース名と単位とが表示されます。
現在のリソース制限値をすべて表示します。
コアダンプのサイズをブロック (512 バイト) 単位で表します。
データ領域のサイズを K バイト単位で表します。
子プロセスが書き込むファイルのサイズをブロック (512 バイト) 単位で表します。読み込むファイルのサイズに制限はありません。
ファイル記述子数に 1 を加えた値を表します。
スタック領域のサイズを K バイト単位で表します。
各プロセスが使用する秒数 (CPU 時間) を表します。
仮想記憶のサイズを K バイト単位で表します。
オプションをすべて省略すると、–f が指定されたものとみなします。
heapsize、datasize、および stacksize パラメータは調整可能なシステムパラメータではありません。これらを制御できるのは、シェルの起動ファイルで設定される強い制限値、または、システム規模の弱い制限値だけです。現在のバージョンの Solaris OS の場合、後者は 213 バイトです。
ulimit は、リソースの制限値を設定または表示します。これらの制限値は、現在のプロセスと、リソースの制限値の設定後に作成された各子プロセスに適用されます。limit を指定した場合は、リソースの制限値が設定され、それ以外の場合は、その現在の値が標準出力に表示されます。
通常、リソースの制限値を上げるには特権が必要です。一部のシステムでは、ユーザーがリソースの制限値を下げて、あとで上げることができます。これらは、弱い制限値と呼ばれます。いったん強い制限値が設定されると、リソースを増やすことはできません。
異なるシステムで異なるリソースを指定でき、一部のシステムではリソースの制限値をどの程度上げられるかが制限されています。
limit の値は、各リソースで示されているリソースの単位によって異なります。また、limit に「unlimited」を指定して、そのリソースについては制限なしであることを示すことができます。
–H または –S を指定しない場合、一覧表示には –S が使用され、リソースの設定には –S と –H の両方が使用されます。
いずれのリソースも指定しない場合、デフォルトは –f です。
ksh における ulimit では、次のオプションを使用できます。
現在のリソースの制限値をすべて表示します。
ソケットバッファーサイズをバイト単位で指定します。
コアファイルサイズをブロック単位で指定します。
データサイズを K バイト単位で指定します。
ファイルサイズをブロック単位で指定します。
強い制限値を表示または設定します。
ファイルのロック数を指定します。
ロックされたアドレス空間を K バイト単位で指定します。
アドレス空間の制限値を K バイト単位で指定します。
開かれているファイルの数を指定します。
パイプバッファーサイズをバイト単位で指定します。
常駐の設定サイズを K バイト単位で指定します。
弱い制限値を表示または設定します。
スタックサイズを K バイト単位で指定します。
スレッド数を指定します。
CPU 時間を秒単位で指定します。
プロセス数を指定します。
プロセスサイズを K バイト単位で指定します。
/usr/bin/ulimit では次のオプションがサポートされています。
ファイルサイズの制限をブロック単位で設定 (blocks を指定しない場合は報告) します。これはデフォルト値です。–
/usr/bin/ulimit では次のオペランドがサポートされています。
新しくファイルサイズの制限として使用する 512 バイトごとのブロック数。
次の例は、スタックサイズを 512K バイトに制限します。
example% ulimit -s 512 example% ulimit -a time(seconds) unlimited file(blocks) 100 data(kbytes) 523256 stack(kbytes) 512 coredump(blocks) 200 nofiles(descriptors) 64 memory(kbytes) unlimited
次のコマンドは、ファイル記述子の数を 12 に制限します。
example$ ulimit -n 12 example$ ulimit -a time(seconds) unlimited file(blocks) 41943 data(kbytes) 523256 stack(kbytes) 8192 coredump(blocks) 200 nofiles(descriptors) 12 vmemory(kbytes) unlimited
次のコマンドは、コアダンプファイルのサイズを 0K バイトに制限します。
example% limit coredumpsize 0 example% limit cputime unlimited filesize unlimited datasize 523256 kbytes stacksize 8192 kbytes coredumpsize 0 kbytes descriptors 64 memorysize unlimited使用例 4 コアファイルサイズの制限を削除する
次のコマンドは、コアファイルサイズの前述の制限を削除します。
example% unlimit coredumpsize example% limit cputime unlimited filesize unlimited datasize 523256 kbytes stacksize 8192 kbytes coredumpsize unlimited descriptors 64 memorysize unlimited
ulimit の実行に影響を与える次の環境変数についての詳細は、environ(5) を参照してください。LANG、LC_ALL、LC_CTYPE、LC_MESSAGES、および NLSPATH。
ulimit により、次の終了値が返されます。
正常終了。
要求した制限値が大きいため拒否された、またはエラーが発生しました。
属性についての詳細は、マニュアルページの attributes(5) を参照してください。
|
|
bc(1), csh(1), ksh(1), ksh88(1), sh(1), df(1M), su(1M), swap(1M), sysdef(1M), getrlimit(2), attributes(5), environ(5), standards(5)
prctl(1) などの Solaris のほかのリソース制限機能と一緒に ulimit を使用する場合、予期しない結果が起こりうることに注意してください。resource-controls(5) を参照してください。
resource-controls(5) に説明されているプロジェクトリソース制御とともに prctl(1) を使用して、有効な制限をいつでも正確に観察してください。