Go to main content

マニュアルページ セクション 1: ユーザーコマンド

印刷ビューの終了

更新: 2018年8月8日
 
 

limit(1)

名前

limit, ulimit, unlimit - 現在のシェルとそのシェルから起動されたプロセスで利用できるシステムリソースの制限値を設定または取得

形式

/usr/bin/ulimit [-f] [blocks]

sh

ulimit [- [HS] [a | cdfnstv]]
ulimit [- [HS] [c | d | f | n | s | t | v]] limit

csh

limit [-h] [resource [limit]]
unlimit [-h] [resource]

ksh88

ulimit [-HSacdfnstv] [limit]

ksh

ulimit [-HSacdfmnpstv] [limit]

bash

ulimit [-SHabcdefilmnpqrstuvxT] [limit]

説明

/usr/bin/ulimit

ulimit ユーティリティーは、シェルとその子プロセスに課せられる書き込み時のファイルサイズの制限値を、設定または報告します (ファイルサイズに関係なく読み取りは可能です)。適切な特権をもつプロセスのみ制限値を上げることができます。

sh

Bourne シェルの組み込み関数 ulimit は、リソースの強い制限値また弱い制限値を表示または設定します。これらの制限値については getrlimit(2) の説明を参照してください。

limit を省略すると、ulimit は指定されている制限値を表示します。制限値は一度にいくつでも表示できます。–a オプションは制限値すべてを表示します。

limit 引数を指定すると、ulimit は指定されたフラグに対応する制限値をその引数の値に設定します。文字列 unlimited は、現在の制限値 (ある場合) の削除を要求します。ユーザーはだれでも、強い制限値以下の値に弱い制限値を設定できます。ユーザーはだれでも、強い制限値を下げることができます。適切な特権を持ったユーザーだけが、強い制限値を上げたり、削除したりできます。getrlimit(2) を参照してください。

–H オプションは強い制限値を表し、–S オプションは弱い制限値を表します。どちらのオプションも指定しない場合、ulimit は両方の制限値を設定し、弱い制限値を表示します。

次のオプションは、制限値を表示または設定するリソースを指定します。オプションを一切指定しないと、ファイルサイズ限界値を表示または設定します。

–c

最大コアファイルサイズ (512 バイトブロック単位)

–d

データセグメントまたはヒープの最大サイズ (K バイト単位)

–f

最大ファイルサイズ (512 バイトブロック単位)

–n

最大ファイル記述子に 1 を加えたもの

–s

スタックセグメントの最大サイズ (K バイト単位)

–t

最大 CPU 時間 (秒単位)

–v

仮想メモリーの最大サイズ (K バイト単位)

csh

C シェルの組み込み関数 limit は、現在のプロセス、またはそれが生成したすべてのプロセスについて、各プロセスが指定された resourcelimit 以上消費しないよう制限します。文字列 unlimited は、現在の制限値 (ある場合) の削除を要求します。limit を省略すると、現在の制限値を出力します。resource を省略すると、すべての制限値を表示します。

–h

現在の制限値ではなく強い制限値を使用します。強い制限値は現在の制限値を制限します。強い制限値を上げることができるのは特権ユーザーだけです。

resource として指定できるものは次のとおりです。

cputime

プロセス当たりの最大 CPU 使用時間 (秒)

filesize

最大の単一ファイル容量。ファイルシステムのサイズと機能に制限されます。df(8) を参照してください。

datasize

K バイト単位のプロセスのヒープの最大サイズ。

stacksize

プロセスの最大スタックサイズ。デフォルトのスタックサイズは 213 です。

coredumpsize

最大コアダンプのファイルサイズ。ファイルシステムのサイズに制限されます。

descriptors

ファイル記述子の最大数。システムで可能性のある上限を取得するには、sysdef(8) コマンドを実行します。sysdef によって報告される値は 16 進数ですが、bc(1) コマンドを使って 10 進数に変換できます。

memorysize

仮想記憶の最大サイズ

limit は数値で、次の単位を付加して指定することもできます。

nh

(cputime の) 時間

nk

n キロバイト。これは cputime を除くすべての値のデフォルト単位です。

nm

nメガバイトまたは (cputime の) 分

mm:ss

(cputime の) 分と秒

unlimitresource に関する制限値を削除します。resource が指定されないと、すべてのリソースの制限値が削除されます。リソース名の一覧については、前述の limit コマンドの説明を参照してください。

–h

対応する強い制限値を削除します。これは特権ユーザーだけしか実行できません。

ksh88

Korn シェルの組み込み関数 ulimit は、リソースの制限を表示または設定します。使用可能なリソースの制限を次に説明します。システムによっては、次に挙げたすべての資源の制限を提供していないこともあります。limit を指定すると、指定したリソースの制限値が設定されます。limit の値は、各リソースに対応した単位 (後述) の数値、または unlimited という文字列です。文字列 unlimited は、現在の制限値 (ある場合) の削除を要求します。–H–S の両フラグは、リソースに対して強い制限値と弱い制限値のどちらを設定するかを表します。強い制限値は、いったん設定したらあとで値を上げることはできません。弱い制限値は、強い制限値を超えない範囲で値を上げることが可能です。–H–S も省略すると、指定した制限値が強い制限と弱い制限の両方に適用されます。limit 引数を省略すると、現在のリソース制限値が表示されます。このとき、–H が指定された場合を除き、表示されるのは弱い制限値です。複数のリソースを指定すると、値の前に制限するリソース名と単位とが表示されます。

–a

現在のリソース制限値をすべて表示します。

–c

コアダンプのサイズをブロック (512 バイト) 単位で表します。

–d

データ領域のサイズを K バイト単位で表します。

–f

子プロセスが書き込むファイルのサイズをブロック (512 バイト) 単位で表します。読み込むファイルのサイズに制限はありません。

–n

ファイル記述子数に 1 を加えた値を表します。

–s

スタック領域のサイズを K バイト単位で表します。

–t

各プロセスが使用する秒数 (CPU 時間) を表します。

–v

仮想記憶のサイズを K バイト単位で表します。

オプションをすべて省略すると、–f が指定されたものとみなします。

シェルごとのメモリーパラメータ

heapsizedatasize、および stacksize パラメータは調整可能なシステムパラメータではありません。これらを制御できるのは、シェルの起動ファイルで設定される強い制限値、または、システム規模の弱い制限値だけです。現在のバージョンの Solaris OS の場合、後者は 213 バイトです。

ksh

ulimit は、リソースの制限値を設定または表示します。これらの制限値は、現在のプロセスと、リソースの制限値の設定後に作成された各子プロセスに適用されます。limit を指定した場合は、リソースの制限値が設定され、それ以外の場合は、その現在の値が標準出力に表示されます。

通常、リソースの制限値を上げるには特権が必要です。一部のシステムでは、ユーザーがリソースの制限値を下げて、あとで上げることができます。これらは、弱い制限値と呼ばれます。いったん強い制限値が設定されると、リソースを増やすことはできません。

異なるシステムで異なるリソースを指定でき、一部のシステムではリソースの制限値をどの程度上げられるかが制限されています。

limit の値は、各リソースで示されているリソースの単位によって異なります。また、limit に「unlimited」を指定して、そのリソースについては制限なしであることを示すことができます。

–H または –S を指定しない場合、一覧表示には –S が使用され、リソースの設定には –S–H の両方が使用されます。

いずれのリソースも指定しない場合、デフォルトは –f です。

ksh における ulimit では、次のオプションを使用できます。

–a

現在のリソースの制限値をすべて表示します。

–b
–sbsize

ソケットバッファーサイズをバイト単位で指定します。

–c
–core

コアファイルサイズをブロック単位で指定します。

–d
–data

データサイズを K バイト単位で指定します。

–f
–fsize

ファイルサイズをブロック単位で指定します。

–H

強い制限値を表示または設定します。

–L
–locks

ファイルのロック数を指定します。

–l
–memlock

ロックされたアドレス空間を K バイト単位で指定します。

–M
–as

アドレス空間の制限値を K バイト単位で指定します。

–n
–nofile

開かれているファイルの数を指定します。

–p
–pipe

パイプバッファーサイズをバイト単位で指定します。

–m
–rss

常駐の設定サイズを K バイト単位で指定します。

–S

弱い制限値を表示または設定します。

–s
–stack

スタックサイズを K バイト単位で指定します。

–T
–threads

スレッド数を指定します。

–t
–cpu

CPU 時間を秒単位で指定します。

–u
–nproc

プロセス数を指定します。

–v
–vmem

プロセスサイズを K バイト単位で指定します。

bash

bash の ulimit 関数は、コアファイル (–c) とファイルサイズ (–f)の制限について、ほかの ulimit 実装とは異なる単位を使用します。bash シェルでは 1024 バイトのブロックサイズが使用されるのに対し、ほかの実装では 512 バイトのブロックが使用されます。/etc/profile のように、さまざまなシェルで実行する必要のあるコードを記述する際には、この点を考慮する必要があります。bash の組み込み関数 ulimit のドキュメントの詳細については、 bash (1) のマニュアルページを参照してください。

オプション

/usr/bin/ulimit では次のオプションがサポートされています。

–f

ファイルサイズの制限をブロック単位で設定 (blocks を指定しない場合は報告) します。これはデフォルト値です。

オペランド

/usr/bin/ulimit では次のオペランドがサポートされています。

blocks

新しくファイルサイズの制限として使用する 512 バイトごとのブロック数。

/usr/bin/ulimit

使用例 1 スタックサイズを制限する

次の例は、スタックサイズを 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

sh/ksh88

使用例 2 ファイル記述子の数を制限する

次のコマンドは、ファイル記述子の数を 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

csh

使用例 3 コアダンプファイルのサイズを制限する

次のコマンドは、コアダンプファイルのサイズを 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(7) を参照してください。LANG、LC_ALL、LC_CTYPE、LC_MESSAGES、および NLSPATH。

終了ステータス

ulimit により、次の終了値が返されます。

0

正常終了。

>0

要求した制限値が大きいため拒否された、またはエラーが発生しました。

属性

属性についての詳細は、マニュアルページの attributes(7) を参照してください。

/usr/bin/ulimit、csh、ksh88、sh

属性タイプ
属性値
使用条件
system/core-os
インタフェースの安定性
確実
標準
standards(7) を参照してください。

ksh

属性タイプ
属性値
使用条件
system/core-os
インタフェースの安定性
不確実

関連項目

bc(1), csh(1), ksh(1), ksh88(1), sh(1), getrlimit(2), attributes(7), environ(7), standards(7), df(8), su(8), swap(8), sysdef(8)

prctl(1) などの Solaris のほかのリソース制限機能と一緒に ulimit を使用する場合、予期しない結果が起こりうることに注意してください。resource-controls(7) を参照してください。

resource-controls(7) に説明されているプロジェクトリソース制御とともに prctl(1) を使用して、有効な制限をいつでも正確に観察してください。