インストールしようとしていますが、389-ds
次の警告が表示されます。
WARNING: There are only 1024 file descriptors (hard limit) available, which limit the number of simultaneous connections.
ファイル記述子を理解していますが、ソフトとハードの制限は理解していません。
走ればcat /proc/sys/fs/file-max
また戻ってくる590432
。これは、最大590432個のファイルを開くことができることを意味します(たとえば、最大590432個のファイル記述子があります)。
ただし、実行するとulimit
他の結果が表示されます。
$ ulimit
unlimited
$ ulimit -Hn # Hard limit
4096
$ ulimit -Sn # Soft limit
1024
しかし、ハード/ソフト制限はどこから来ており、ulimit
保存された数字とどのような関係がありますか/proc/sys/fs/file-max
?
ベストアンサー1
~によるとカーネル文書、/proc/sys/fs/file-max
はファイルの最大ファイル数、グローバル数ハンドルカーネルはブロックする前に割り当てます。これは、現在のユーザーの制限ではなく、カーネルの制限です。だからあなたはできるアイドルシステム(シングルユーザーモード、実行中のデーモンなし)に一人でいる場合は、590432を開きます。struct file
カーネルのファイルハンドルはファイル記述子とは異なります。複数のファイル記述子が同じファイルハンドルを指すことができ、ファイルハンドルも存在する可能性があります。いいえ内部的に接続された記述子です。システム全体のファイル記述子の制限はありません。これはプロセスごとにのみ適用できます。
この文書は古いものなので、/proc/sys/fs/file-max
長い間使用されてきました。この点を指摘したMartin Jambonに感謝します。
SEで応答するソフト制限とハード制限の違い。ハード制限を超えない限り、通常のユーザーとしてソフト制限を増減できます。ハード制限を下げることもできます(ただし、プロセス中に再度上げることはできません)。スーパーユーザーとして、ハードとソフトの制限を増減できます。デュアル制限スキームはシステムポリシーを実施するために使用されますが、一般ユーザーが自分で一時的な制限を設定し、後で変更することもできます。
ハード制限をソフト制限より下にしようとすると(スーパーユーザーでない場合)、EINVAL
無効な引数が返されます。
したがって、あなたの特定の場合ulimit
(と同じulimit -Sf
)は、あなたが次に興味を持っていることを意味します。シェルとそのサブプロセスで作成されたファイルサイズ。 (ほとんどの場合、これは良い考えです)
その他の通話ulimit -Hn
レポートの制限-n
(開いているファイル記述子の最大数)、いいえ制限がある-f
ため、ソフト制限がハード制限より高いようです。入力してもulimit -Hf
受け取ることができますunlimited
。