web-dev-qa-db-ja.com

Linuxでの最大オープンファイル制限は何ですか?

Linuxでは、プロセスがファイルを開くと、OSは最大オープンファイル制限をチェックします。

制限が1024だった場合、数値はどういう意味ですか?

それは表しますか

  • プロセスによって開かれたファイルの数
  • プロセスを所有するユーザーが開いたファイルの数
  • 現在OSで開かれているすべてのファイルの数
14
kino lucky

_ulimit -a_コマンドを使用して、システムのソフト制限とハード制限を確認できます。

  1. ソフト制限は、単に現在適用されている制限です。
  2. ハード制限は、ソフト制限を設定することで超えることができない最大値をマークします。

ソフト制限は任意のユーザーが設定できますが、ハード制限はrootだけが変更できます。制限はプロセスのプロパティです。これらは子プロセスの作成時に継承されるため、システム全体の制限はシステムの初期化中にinitスクリプトで設定し、ユーザーの制限はユーザーのログイン中に、たとえば_pam_limits_を使用して設定する必要があります。

多くの場合、マシンの起動時にデフォルトが設定されています。そのため、個々のシェルでulimitをリセットしても、再起動時に以前の値にリセットされることがあります。デフォルトを変更する場合は、存在するulimitコマンドのブートスクリプトをgrepすることをお勧めします。

制限が1024の場合、ユーザーまたはプロセスが最大1024ファイルを開くことができることを意味します。この制限を超えると、openpipeおよびdupシステムコールは失敗します。

RLIMIT_NOFILE:

このプロセスで開くことができるファイル記述子の最大数よりも1大きい値を指定します。この制限を超えようとすると(open(2)pipe(2)dup(2)など)、エラーEMFILEが発生します。

15
Sathish

これは、開いているファイル記述子プロセスごとの数です。それらはすべて同じファイルまたは異なるファイルを参照できます。

シェルのulimit -aを使用するか、getrlimitを使用してプログラムで現在の制限を確認できます。システム全体の制限は/etc/security/limits.confで設定されます。

Linuxのファイルシステムオブジェクトモデルは次のとおりです。

file descriptor -> file description -> dentry -> inode
  1. ファイル記述子は、アプリケーションで使用される整数です。
  2. ファイルの説明は、1つ以上のファイル記述子が対応するカーネルデータ構造です参照する。
  3. dentryはファイル名です。 1つのファイルに多くの名前(ハードリンク)を付けることができます。
  4. inodeはファイルの内容です。

dupは、同じファイル記述に新しいファイル記述子を作成します。 openは、新しいファイル記述子とファイルの説明を作成します。

3

私の理解では、これは開いているファイル(記述子)の最大数ユーザーごとを意味します。

編集:実際、limits.confはユーザーごとにこの値を設定します。

* hard nofile 1024

これはallユーザーのハード制限を意味します(すべてのユーザーについて)

または、次のように設定することもできます。

myuser hard nofile 1024

これは、ユーザーの1024制限を意味しますmyuser

0
Marcelo

Linuxの場合は、次の出力を確認します。

ulimit -a

Linuxで開いているファイルの数を制限し、開いているファイルの制限を無制限に設定して問題を解決する方法があるため、システムで開いているファイルの数の制限は何であるかがわかります。

0
Umesh Golla