1 .\" Hey Emacs! This file is -*- nroff -*- source.
3 .\" Copyright (c) 1992 Drew Eckhardt, March 28, 1992
4 .\" and Copyright (c) 2002, 2004, 2005, 2008 Michael Kerrisk
6 .\" Permission is granted to make and distribute verbatim copies of this
7 .\" manual provided the copyright notice and this permission notice are
8 .\" preserved on all copies.
10 .\" Permission is granted to copy and distribute modified versions of this
11 .\" manual under the conditions for verbatim copying, provided that the
12 .\" entire resulting derived work is distributed under the terms of a
13 .\" permission notice identical to this one.
15 .\" Since the Linux kernel and libraries are constantly changing, this
16 .\" manual page may be incorrect or out-of-date. The author(s) assume no
17 .\" responsibility for errors or omissions, or for damages resulting from
18 .\" the use of the information contained herein. The author(s) may not
19 .\" have taken the same level of care in the production of this manual,
20 .\" which is licensed free of charge, as they might when working
23 .\" Formatted or processed versions of this manual, if unaccompanied by
24 .\" the source, must acknowledge the copyright and authors of this work.
26 .\" Modified by Michael Haardt <michael@moria.de>
27 .\" Modified 1993-07-23 by Rik Faith <faith@cs.unc.edu>
28 .\" Modified 1996-01-13 by Arnt Gulbrandsen <agulbra@troll.no>
29 .\" Modified 1996-01-22 by aeb, following a remark by
30 .\" Tigran Aivazian <tigran@sco.com>
31 .\" Modified 1996-04-14 by aeb, following a remark by
32 .\" Robert Bihlmeyer <robbe@orcus.ping.at>
33 .\" Modified 1996-10-22 by Eric S. Raymond <esr@thyrsus.com>
34 .\" Modified 2001-05-04 by aeb, following a remark by
35 .\" Havard Lygre <hklygre@online.no>
36 .\" Modified 2001-04-17 by Michael Kerrisk <mtk.manpages@gmail.com>
37 .\" Modified 2002-06-13 by Michael Kerrisk <mtk.manpages@gmail.com>
38 .\" Added note on nonstandard behavior when SIGCHLD is ignored.
39 .\" Modified 2002-07-09 by Michael Kerrisk <mtk.manpages@gmail.com>
40 .\" Enhanced descriptions of 'resource' values for [gs]etrlimit()
41 .\" Modified 2003-11-28 by aeb, added RLIMIT_CORE
42 .\" Modified 2004-03-26 by aeb, added RLIMIT_AS
43 .\" Modified 2004-06-16 by Michael Kerrisk <mtk.manpages@gmail.com>
44 .\" Added notes on CAP_SYS_RESOURCE
46 .\" 2004-11-16 -- mtk: the getrlimit.2 page, which formally included
47 .\" coverage of getrusage(2), has been split, so that the latter
48 .\" is now covered in its own getrusage.2.
50 .\" Modified 2004-11-16, mtk: A few other minor changes
51 .\" Modified 2004-11-23, mtk
52 .\" Added notes on RLIMIT_MEMLOCK, RLIMIT_NPROC, and RLIMIT_RSS
53 .\" to "CONFORMING TO"
54 .\" Modified 2004-11-25, mtk
55 .\" Rewrote discussion on RLIMIT_MEMLOCK to incorporate kernel
57 .\" Added note on RLIMIT_CPU error in older kernels
58 .\" 2004-11-03, mtk, Added RLIMIT_SIGPENDING
59 .\" 2005-07-13, mtk, documented RLIMIT_MSGQUEUE limit.
60 .\" 2005-07-28, mtk, Added descriptions of RLIMIT_NICE and RLIMIT_RTPRIO
61 .\" 2008-05-07, mtk / Peter Zijlstra, Added description of RLIMIT_RTTIME
63 .\" Japanese Version Copyright (c) 1997 HANATAKA Shinya
64 .\" all rights reserved.
65 .\" Translated 1997-02-22, HANATAKA Shinya <hanataka@abyss.rim.or.jp>
66 .\" Updated and Modified 2001-06-02, Yuichi SATO <ysato444@yahoo.co.jp>
67 .\" Updated and Modified 2001-08-18, Yuichi SATO
68 .\" Updated and Modified 2002-08-25, Yuichi SATO
69 .\" Updated and Modified 2004-01-17, Yuichi SATO
70 .\" Updated and Modified 2004-12-30, Yuichi SATO
71 .\" Updated and Modified 2005-09-10, Yuichi SATO
72 .\" Updated and Modified 2005-10-11, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
73 .\" Updated and Modified 2005-10-27, Akihiro MOTOKI
74 .\" Updated and Modified 2006-04-15, Akihiro MOTOKI, Catch up to LDP v2.29
75 .\" Updated 2008-08-08, Akihiro MOTOKI, LDP v3.05
76 .\" Updated 2008-10-13, Akihiro MOTOKI, LDP v3.11
81 .TH GETRLIMIT 2 2010-09-26 "Linux" "Linux Programmer's Manual"
83 getrlimit, setrlimit \- 資源の制限を取得/設定する
85 .B #include <sys/time.h>
87 .B #include <sys/resource.h>
89 .BI "int getrlimit(int " resource ", struct rlimit *" rlim );
91 .BI "int setrlimit(int " resource ", const struct rlimit *" rlim );
96 はそれぞれ資源 (resource) の制限 (limit) の設定と取得を行う。
97 各リソースには、それに対応するソフト・リミットとハード・リミットがある。
111 rlim_t rlim_cur; /* ソフト・リミット */
112 rlim_t rlim_max; /* ハード・リミット
113 (rlim_cur より小さくない) */
118 ソフト・リミットは、カーネルが対応するリソースに対して課す制限値である。
119 ハード・リミットはソフト・リミットの上限として働く。
120 特権を持たないプロセスは、ソフト・リミットの値を
121 0 からハード・リミットの範囲に設定することと、
123 (一度下げたハードリミットは上げられない)。
126 ケーパビリティ (capability) を持つプロセス) は
127 ソフト・リミットとハード・リミットを自由に変更できる。
142 プロセスの仮想メモリ (アドレス空間) の最大サイズ (バイト単位)。
143 .\" 2.0.27 / 2.1.12 以降。
148 の呼び出しに影響し、この制限を超えた場合は
155 を使った代替スタックを利用可能にしていなかった場合には、
157 を生成してそのプロセスを kill する)。
158 この値は \fIlong\fP 型なので、32 ビットの \fIlong\fP 型を持つマシンでは、
159 この制限は最大で 2 GiB になるか、この資源が無制限になる。
164 0 の場合、core ファイルは生成されない。
165 0 以外の場合、このサイズより大きいダンプは切り詰められる。
169 プロセスがソフト・リミットに達した場合に、
172 このシグナルに対するデフォルトの動作は、プロセスの終了である。
173 ただしシグナルをキャッチして、ハンドラがメインプログラムに
175 プロセスが CPU 時間を使い続けた場合は、
176 ハードリミットに達するまで 1 秒毎にプロセスに
183 Linux 2.2 から 2.6 のものである。
184 ソフト・リミットを超えて CPU 時間を使い続けるプロセスの
190 を受け取った時点で正しく終了すべきである。
194 (初期化されたデータ・初期化されていないデータ・ヒープ) の最大値。
200 これらの関数は、このリソースのソフト・リミットに達すると、
206 プロセスが作成できるファイルサイズの最大値。
210 デフォルトでは、このシグナルはプロセスを終了する。
219 .BR RLIMIT_LOCKS " (初期の Linux 2.4 のみ)"
220 .\" 正確には Linux 2.4.0-test9 のみ。2.4.25 / 2.5.65 ではなくなっている。
228 RAM 内にロックできるメモリの最大バイト数。
229 実際には、この制限はシステムページサイズの最も近い倍数に
242 この操作は呼び出し元プロセスの実 (real) ユーザー ID にロックされる
245 を参照) の合計バイト数の最大値を設定する。
254 によって確立されるプロセス毎のメモリロックとは分けて数える。
255 1 つのプロセスはこの制限までのバイトをロックできる。
257 2.6.9 より前の Linux カーネル では、
258 この制限は特権プロセスによってロックされるメモリの合計を制御していた。
259 Linux 2.6.9 以降では、特権プロセスがロックするメモリの合計に制限はなく、
260 代わりにこの制限は非特権プロセスがロックするメモリの合計に
263 .BR RLIMIT_MSGQUEUE " (Linux 2.6.8 以降)"
264 呼び出し元プロセスの実ユーザー ID に対して、
265 POSIX メッセージキューのために確保できるバイト数の制限を指定する。
269 ユーザが作成した各々のメッセージキューのバイト数は
270 以下の式により計算され、(そのキューが削除されるまでの間)
274 bytes = attr.mq_maxmsg * sizeof(struct msg_msg *) +
275 attr.mq_maxmsg * attr.mq_msgsize
286 .I "sizeof(struct msg_msg *)"
287 (Linux/i386 では 4 バイト) を含む最初の加数は、
288 ユーザーが長さ 0 のメッセージを無制限に作れないこと保証している
290 記録のためのオーバーヘッドでシステムメモリを消費する)。
292 .BR RLIMIT_NICE " (Linux 2.6.12 以降, 下記の「バグ」の節も参照)"
296 を使って引き上げられるプロセスの nice 値の上限を指定する。
298 .I "20\ \-\ rlim_cur"
300 (このような変な状況は、リソース制限値として負の数を指定できないため
301 発生する。通常、負の値は特別な意味を持っているからである。
307 このプロセスがオープンできるファイルディスクリプタ数の最大値より
312 などにより) この上限を超えようとした場合、エラー
320 呼び出したプロセスの実ユーザー ID で作成できる最大プロセス数
321 (より正確には Linux ではスレッド数)。
329 プロセスの resident set (RAM 上に存在する仮想ページの数) の
331 この制限は 2.4.30 より前でしか影響がなく、
336 .\" カーネル 2.6.12 の時点では、
337 .\" この制限はカーネル 2.6 ではまだ何も行わない。
338 .\" しかし、何をさせるかについては LKML で時々話題になっている。
341 .BR RLIMIT_RTPRIO " (Linux 2.6.12 以降, バグの節も参照)"
342 .BR sched_setscheduler (2)
344 .BR sched_setparam (2)
345 を使って設定できる、そのプロセスのリアルタイム優先度の上限を指定する。
347 .BR RLIMIT_RTTIME " (Linux 2.6.25 以降)"
348 リアルタイム・スケジューリング方針でスケジューリングされるプロセスが
349 ブロッキング型のシステムコールを呼び出さずに消費することのできる
350 CPU 時間の合計についての上限を (マイクロ秒単位で) 指定する。
351 この上限の目的のため、プロセスがブロッキング型のシステムコールを
352 呼び出す度に、消費された CPU 時間のカウントは 0 にリセットされる。
353 プロセスが CPU を使い続けようとしたが他のプロセスに置き換えられた
354 (preempted) 場合や、そのプロセスのタイムスライスが満了した場合、
357 を呼び出した場合は、CPU 時間のカウントはリセットされない。
359 ソフト・リミットに達すると、そのプロセスに
361 シグナルが送られる。そのプロセスがこのシグナルを捕捉するか
362 無視して、CPU 時間を消費し続けた場合には、
363 ハード・リミットに達するまで 1 秒に 1 回
366 ハード・リミットに達した時点で、そのプロセスには
370 この上限を意図的に使用するのは、暴走したリアルタイム・プロセスを
371 停止して、システムが動かなくなるのを避ける場合である。
373 .BR RLIMIT_SIGPENDING " (Linux 2.6.8 以降)"
374 呼び出し元プロセスの実ユーザー ID に対して
375 キューに入れられるシグナルの数の制限を指定する。
377 標準シグナルとリアルタイム・シグナルの両方がカウントされる。
382 使うことで、そのプロセスに対してまだキューに入れられていない
383 シグナルのインスタンスをキューに入れることができる。
384 .\" これはカーネル 2.6.7 以前に存在するシステム全体の制限
385 .\" /proc/sys/kernel/rtsig-max を置き換える。MTK Dec 04
388 プロセス・スタックの最大サイズをバイト単位で指定する。
394 .RB ( sigaltstack (2))
397 Linux 2.6.23 以降では、この制限はプロセスのコマンドライン引き数と環境変数
398 に使用される空間の合計サイズの上限の決定にも使用される。詳細については
402 成功した場合は 0 が返される。エラーの場合は \-1 が返され、
409 がアクセス可能なアドレス空間の外を指している。
427 現在のハード・リミットより大きくしようと試みた。
440 SVr4, 4.3BSD, POSIX.1-2001.
444 は BSD から派生し、POSIX.1-2001 には指定されていない。
445 これらは BSD 系と Linux に存在するが、他の実装は少ない。
447 は BSD から派生し、POSIX.1-2001 には指定されていない。
449 .BR RLIMIT_MSGQUEUE ,
462 シェルのリソース制限は、シェルの組み込みコマンドである
468 このシェルのリソース制限は、コマンドを実行してシェルが生成するプロセス
483 以前の Linux カーネルでは、プロセスがソフトまたはハード
489 シグナルが、本来送られるべき時点の 1 (CPU) 秒後に送られてしまう。
490 これはカーネル 2.6.8 で修正された。
492 2.6.17 より前の 2.6.x カーネルでは、
496 と同じように) 「制限なし」と間違って解釈されていた。
497 Linux 2.6.17 以降では、リミットを 0 に設定した場合にも
498 効果を持つようになっているが、実際にはリミットの値は 1 秒となる。
499 .\" see http://marc.theaimsgroup.com/?l=linux-kernel&m=114008066530167&w=2
503 が動作しないというバグがある。この問題はカーネル 2.6.13 で修正されている。
509 が返す優先度の範囲が一つずれていた。このため、nice 値の実際の上限が
510 .I "19\ \-\ rlim_cur"
511 になってしまうという影響があった。これはカーネル 2.6.13 で修正された。
512 .\" 参考: http://marc.theaimsgroup.com/?l=linux-kernel&m=112256338703880&w=2
538 .BR capabilities (7),