- 書式
- ulimit [OPTIONS] [LIMIT]
概要
ulimit
ビルトインは
シェルと子プロセスの
リソース使用量を
設定したり出力したりします。
LIMIT
を指定すれば、
制限値をその値にし、
指定しなければ
現在の制限値を出力します。
以下のスイッチのひとつを使い、
取得・設定するリソースを
指定してください。
-c
/--core-size
- 作成されるコアダンプのファイルの最大サイズ。
0に指定するとコアダンプしない。 -d
/--data-size
- データ領域の最大サイズ。
-f
/--file-size
- シェルが作成するファイルの最大サイズ。
-l
/--lock-size
- メモリーにロックできる最大サイズ。
-m
/--resident-set-size
- メモリー使用量の最大サイズ。
-n
/--file-descriptor-count
- ファイルディスクリプタの最大数。
(ほとんどのシステムでは設定できない) -s
/--stack-size
- スタックの最大サイズ。
-t
/--cpu-time
- CPU時間の上限(秒数)。
-u
/--process-count
- ユーザひとりが起動できるプロセス最大数。
-v
/--virtual-memory-size
- 仮想メモリー使用量の最大サイズ。
注意:すべてのOSで上記すべての
制限があるわけではありません。
制限値はは以下のどれかになります。
- リソースによって定められた単位の数
hard
(現在のハード制限)soft
(現在のソフト制限)unlimited
(無制限)
指定されたリソースの
LIMIT
が与えられれば、
新しい制限値にします。
オプションを指定しなければ
-f
(ファイルサイズ上限)
になります。
単位は以下の通りです。
-t
は秒数-n
と-u
は単位なし- その他はキロバイト
以下の場合を除き、
終了ステータス は0となります。
- 不正なオプションを指定したとき
- 不正な引数を指定したとき
- 新しい制限値を設定中にエラーが起きたとき
ulimit
はまた、
設定する制限の種類を決定するために、
以下のオプションを受け付けます。
-H
/--hard
- ハードリミット
-S
/--soft
- ソフトリミット
ハードリミットは
減らすことしかできません。
一度設定されたら、
増やすことはできません。
一方、ソフトリミットは
ハードリミットまで
増やすことができます。
-H
も -S
も指定しない場合は、
ソフトリミットとハードリミットを
新しい制限値に更新します。
現在のソフトリミットを出力します。
以下の追加のオプションを
受け付けます。
-a
/--all
- 現在の全ての制限値を表示します。
fishの ulimit
は
bashと同じようにふるまいますが、
以下の3つの相異点があります。
- 全オプションにおいて
GNUスタイルの長いオプションを持つ。 - パイプのサイズを得る
-p
オプションをサポートしていない。
bashだとパイプへの書き込みと
SIGPIPE
を待つことによって
経験的に推測された値を
コンパイル時のチェックで設定している。
パイプのサイズをこの方法で
決定するのは信頼できないので、
fishでは採用していない。
bashのバージョンによって、
bashで設定できてfishでは設定できない
新たな制限値が出てくるかもしれない。 - fishの
ulimit
はひとつのコマンドで
複数の制限値を取得・設定できない。
ただし、全ての制限値を出力する-a
は除く。
実行例
スタックサイズのハードリミットを
64kBに設定する。
$ ulimit -Hs 64
最後までお読みいただき、ありがとうございました。参考になれば嬉しいです。