# Ulimit 組込みコマンド

Ulimit 組込みコマンドはシェルプロセスのリソース制限を表示・設定します。

## 構文

- `ulimit -a [-H|-S]`

- `ulimit [-H|-S] [-efilnqrstuvx] [値]`

## 説明

Ulimit コマンドはシェルプロセスのリソース制限値を表示または設定します。

`-a` (`--all`) オプションを付けて実行すると、ulimit コマンドは全ての種類のリソースについて現在の制限値を一覧形式で標準出力に出力します。`-a` (`--all`) オプションを付けないで実行すると、一種類のリソースについて制限値を表示または設定します。オペランドで値を指定している場合、その値に制限値を設定します。値を指定していない場合は現在の制限値を標準出力に出力します。表示・設定するリソースの種類はオプションで指定します。設定したリソースの制限値はシェルが起動する各コマンドに受け継がれます。

リソースの各種類について、ハードリミットとソフトリミットの二種類の制限値があります。ソフトリミットがハードリミットを超えることはできません。またハードリミットを緩めるには専用の権限が必要です。

`-H` (`--hard`) オプションを指定している場合、ulimit コマンドはハードリミットを表示または設定します。`-S` (`--soft`) オプションを指定している場合、ulimit コマンドはソフトリミットを表示または設定します。どちらのオプションも指定してない場合、ulimit コマンドはソフトリミットのみを表示するかまたはハードリミットとソフトリミットの両方を設定します。

## オプション

`-H`
`--hard`

  ハードリミットを表示または設定します。

`-S`
`--soft`

  ソフトリミットを表示または設定します。

`-a`
`--all`

  全種類のリソース制限値を表示します。

以下のオプションは表示・設定するリソースの種類を指定します。これらのオプションがどれも与えられていないときは、`-f` が与えられたものとみなします。(表示・設定可能なリソースの種類はシステムによって異なります)

`-c`
`--core`

  プロセスが強制終了させられたときにできるコアファイルのサイズの限界 (512 バイト単位)

`-d`
`--data`

  プロセスが使用できるデータセグメント領域のサイズの限界 (キロバイト単位)

`-e`
`--nice`

  スケジューリング優先度 (nice 値) の限界

`-f`
`--fsize`

  プロセスが作成できるファイルのサイズの限界 (512 バイト単位)

`-i`
`--sigpending`

  プロセスの処理待ちシグナルの個数の限界

`-l`
`--memlock`

  RAM 上にロック可能なメモリサイズの限界 (キロバイト単位)

`-m`
`--rss`

  プロセスの resident set (RAM 上に存在する仮想ページ) の数の限界 (キロバイト単位)

`-n`
`--nofile`

  プロセスが使用できるファイル記述子の最大値 + 1

`-q`
`--msgqueue`

  POSIX メッセージキューのサイズの限界

`-r`
`--rtprio`

  リアルタイムスケジューリングの優先度の限界

`-s`
`--stack`

  プロセスが使用できるスタック領域のサイズの限界 (キロバイト単位)

`-t`
`--cpu`

  プロセスが使用できる CPU 時間の限界 (秒単位)

`-u`
`--nproc`

  プロセスが起動できる子プロセスの個数の限界

`-v`
`--as`

  プロセスが使用できるメモリ領域全体のサイズの限界 (キロバイト単位)

`-x`
`--locks`

  プロセスがロックできるファイルの個数の限界

## オペランド

値

  設定するリソース制限値です。

  値は基本的に 0 以上の自然数で指定しますが、自然数の代わりに `hard`、`soft`、`unlimited` のいずれかの文字列を指定することもできます。これらの文字列はそれぞれ現在のハードリミットの値、現在のソフトリミットの値、無制限を表します。

## 終了ステータス

リソース制限値が正しく出力または設定できたときは、終了ステータスは 0 です。エラーがあると終了ステータスは非 0 です。

## 補足

POSIX が規定しているオプションは `-f` だけです。また POSIX はオペランドの値として自然数しか規定していません。

Ulimit コマンドは準特殊組込みコマンドです。