UNIX/Linuxの部屋 limitコマンドの使い方

TOP UNIX/Linuxの部屋 UNIX/Linuxコマンド一覧 用語集 新版 由来/読み方辞書 環境変数マニュアル Cシェル変数 システム設定ファイル システムコール・ライブラリ ネットワークプログラミングの基礎知識 クラウドサービス徹底比較・徹底解説




コマンド limit プロセスへの各種の制限を設定する。csh・tcsh の内部コマンド。 このエントリーをはてなブックマークに追加

limit で設定できる制限値には、一般ユーザが変更できる(普通の)リミットと、root しか変更できないハードリミットがある。引数なしで limit を実行すると
% limit 
cputime         unlimited
filesize        unlimited
datasize        16384 kbytes
stacksize       8192 kbytes
coredumpsize    unlimited
memoryuse       30720 kbytes
descriptors     64 
memorylocked    10240 kbytes
maxproc         64 
と現在のリミット値が表示される。一方、-h オプションをつけると
% limit -h
cputime         unlimited
filesize        unlimited
datasize        131072 kbytes
stacksize       65536 kbytes
coredumpsize    unlimited
memoryuse       unlimited
descriptors     360 
memorylocked    124084 kbytes
maxproc         179 
とハードリミットが表示される。この状態では、最大プロセス数は64 (maxproc=64だから) だが、
% limit maxproc 179
とすることで、最大プロセス数を 179 にすることができる。しかし一般ユーザは
% limit maxproc 180
などとハードリミットを越える値をセットすることはできない。ハードリミットを変更することができるのは root のみである。

limit の各項目の意味以下の通り。
cputime
各プロセスが CPU を使うことのできる時間の上限
filesize
1つのファイルの長さの上限
datasize
sbrk(2) を用いてプログラムのテキスト領域の末尾を超えて増加させることのできる data+stack 領域のサイズの上限
stacksize
自動的に拡張されるスタックのサイズの上限
coredumpsize
コアダンプした際に作られるコアファイルのサイズの上限
% limit coredumpsize 0
で、コアダンプ時に core ファイルを生成しないようにすることができる。
memoryuse
各プロセスが使用できるメモリ使用量
descriptors
1ユーザが同時にオープン可能なファイル数の上限
memorylocked
???
maxproc
1ユーザが同時に実行可能なプロセス数の上限

値の単位は各項目ごとに異なる。cputime は
% limit cputime 1 1秒
% limit cputime 1m 1分
% limit cputime 1h 1時間
% limit cputime 1:1 1分1秒
で、maxproc・descriptors はそれぞれプロセス、デスクリプタの個数、その他は
% limit filesize 1 1キロバイト
% limit filesize 1m 1メガバイト
などと指定する。