Oracleユーザー用に/etc/security/limits.conf
のnofile
値を調整しています。その動作について質問があります。ユーザーが開くことができるファイルの総数をnofile
で制限しますallそのプロセスの数、またはユーザーが開くことができるファイルの総数を制限していますかeachそのプロセスの数?
具体的には、次の使用法の場合:
Oracle hard nofile 65536
limits.conf
のほとんどの値¹は、ulimit
シェルコマンドまたは setrlimit
システムコールで設定できる制限です。それらはプロセスのプロパティです。制限は、プロセスごとに個別に適用されます。特に、各プロセスは最大nofile
のオープンファイルを持つことができます。ユーザーのプロセスによって累積される開いているファイルの数に制限はありません。
nproc
制限は、ユーザーのすべてのプロセスを合計するという点で、少し特殊なケースです。それでもなお、プロセスごとに適用されます。プロセスがfork
を呼び出して新しいプロセスを作成するとき、プロセスのeuidに属するプロセスの数がプロセスのRLIMIT_NPROC
値よりも大きい場合、呼び出しは拒否されます。
limits.conf
man page は、制限がセッションに適用されることを説明しています。つまり、セッション内のすべてのプロセスには、これらの同じ制限があります(これらのプロセスのいずれかによって変更されない限り)。これは、セッション内のプロセス全体で合計が行われることを意味するわけではありません(これは、オペレーティングシステムが追跡するものでさえありません。セッションの概念がありますが、それよりも細かく、たとえば、各X11アプリケーションは終了する傾向があります独自のセッションで起動します)。それが機能する方法は、ログインプロセス自体にいくつかの制限を設定し、それらがすべての子プロセスに継承されることです。
¹ 例外はmaxlogins
、maxsyslogins
およびchroot
で、ログインプロセスの一部として適用され、ログインを拒否または影響します。