/etc/sysctl.confと/etc/security/limits.confの違いについて混乱している

/etc/sysctl.confと/etc/security/limits.confの違いについて混乱している

私はAzureクラウドのUbuntu18.04.1 Bionic VMを使用しています。システムレベルで最大ファイル記述子数を設定しようとしています。初めてログインして実行すると、ulimit -n1024という値が得られます。だから確認してみましたが、/etc/security/limits.conf構成はありません。なので、このように構成したのではないかと思って確認してみるとcat /proc/sys/fs/file-max1426416に設定されていました。質問1:1024はどこから来ましたか?

/etc/security/limits.conffor *とルートドメインにいくつかのエントリを設定することでこれを変更することができましnofileulimit -n。だから私の質問2:アイテムの目的は何ですか/proc/sys/fs/file-max?これを使って設定すればいいと思います。sysctl.conf

答え1

/etc/security/limits.conf ファイルは pam_limits を構成するために使用され、PAM スタックを介して開始されたユーザーおよびサービスにのみ影響します。

/proc/sys/fs/file-max はカーネル sysctl によって定義され、オペレーティングシステムで起動されるプロセスの設定です。

ユニットファイルにLimitNOFILE = 1024を追加して、systemdサービスでファイル制限を設定することもできます。

答え2

1024はどこから来たのですか?

これがカーネルです開かれたファイル数のデフォルト制限、各プロセス。これはその一つです。リソース制限プロセスごとに設定できます。

入社目的は何ですか/proc/sys/fs/file-max

file-max指定する最大ファイルハンドル数、システム全体について。この制限に達すると、プロセス固有の制限に関係なく、どのプロセスでもファイルを開くことができません。

nr_open、同じディレクトリに最大値を指定します。プロセスあたりの制限。使用される実際の値はリソース制限です(上記を参照)。これにより、最大リソース制限が決まります。

関連情報