/etc/sysctl.confと/etc/security/limits.confで開かれたファイル制限を設定することの違いは何ですか?

/etc/sysctl.confと/etc/security/limits.confで開かれたファイル制限を設定することの違いは何ですか?

私は許可された開かれたファイルの数を増やす2つの異なる方法を読んでいました(重要な場合はrootを修正しようとしています)。

/etc/security/limits.conf1つの方法は、次のように設定を更新することです。

*                soft    nofile          500000

*                hard    nofile          500000

root             soft    nofile          500000

root             hard    nofile          500000

アクティブシェルを設定するには、ulimit -n 500000再起動やログアウト/ログインは必要ありませんが、サービスを再起動(?)する必要がある可能性があるように見えます。


別のオプションは、以下を更新することです/etc/sysctl.conf

echo 'fs.file-max = 500000' >> /etc/sysctl.conf

アクティブシェルを設定sysctl -pするにはsysctl fs.file-max

だから私の質問の違いは何ですか?それを持って?オンライン中Ubuntu 14.04.2 LTS

答え1

違いは範囲と適用方法にあります。 sysctls で設定されたオープンファイルの制限はシステム全体に適用され、sysctls で設定された制限は/etc/security/limits.confここで指定された条件を満たすコンテンツにのみ適用されます。もう1つの主な違いは、制限が/etc/security/limits.confulimitを介して適用されるため、より簡単に変更できることですが、sysctl制限は本質的にカーネル自体にメモリ割り当て制限を設定することです。

通常、/etc/security/limits.confワイルドカードの一致を設定しても、ほとんど常にグローバル制限を使用したいと思います。なぜなら、これはより信頼性が高く、カーネルメモリ割り当て制限に直面するよりもulimit制限に直面するとき、通常はより正常に失敗するからです。

関連情報