web-dev-qa-db-ja.com

/ etc / sysconfig / initファイルにulimitを設定して、起動時に値を適用できますか?

起動時にすべてのサービスにulimit値を設定する必要があります。 /etc/sysconfig/limits.confに値を設定していますが、これらの値は起動時に適用されず、デフォルトで1024が必要です。

私はlimits.confに値を設定し、/ etc/pam.d/*に「必須のpam_limits.so」エントリが含まれているかどうか、さらに/etc/security/limits.d/90-nproc.confにもデフォルトがないかどうかを確認しましたエントリ。

起動時に値を含める別の方法を見つけたので、/ etc/sysconfig/initファイルに出くわしました。このファイルに値を設定すると、すべてのサービスが起動時に期待値を取得しました。

現在、サーバーへの影響と、この/ etc/sysconfig/initファイルでの構成を無視する必要があることについてはわかりません。また、このファイルまたは上記のメソッド以外の代替手段はありますか。

4
Sandeep Sukhija

Ulimitは、サービスやシステム全体に固有のものではなく、個々のアカウントに固有のものです。 /etc/security/limits.confのソフト制限は、サービスを開始したときにデフォルトとして表示されるものである必要があります。これはあなたのケースでは起こっていないようですので、問題のサービスを実行しているユーザーのドットファイル、または問題のサービスの実際の初期化スクリプトを調べ始めます。 。 ulimitがこれら2つの場所のいずれかに設定されているため、/etc/security/limits.conf値がオーバーライドされているように感じます。

1
John

私はあなたが話しているその方法を使用して、Apacheユーザーによって作成されたファイルにulimitumaskを設定しました。つまり、/etc/init.d/httpdを編集し、そこにumaskulimit -sの構成を含めたので、問題が解決したので、これは良い解決策だと思います。予想以外の影響はありませんでした。

0
Itai Ganot

ファイル/etc/security/limits.confはPAMによって使用されますが、ユーザーがログインしているときにPAMが使用されます。ただし、サービスが開始されると、PAMを経由しないため、limits.confは役に立ちません。サービスはinitシステムによって起動され、それらの設定は使用するシステムによって異なります。 upstartを使用している場合は、システム全体で/etc/sysconfig/initまたはサービスごとに/etc/sysconfig/<servicename>で設定できます。 systemdの世界では、ulimitsはusint Limit<type>=によってサービスファイルに設定できますが、システム全体でそれを行う方法がわかりません。 OpenRCを使用すると、サービスごとに、またはシステム全体でrc_ulimit=/etc/rc.confに設定できます。

0
nert