きれいなログインシェルを使用してスクリプトを実行する方法

きれいなログインシェルを使用してスクリプトを実行する方法

SSHを介してリモートシステムLinux RH6(サーバーからキーを取得する)に直接接続していますが、Javaサービスを再起動するためにパラメータを含むシェルスクリプトを実行すると、奇妙なulimitの問題が発生します。

  • 手動で実行すると、./script.sh stop;./catalina.sh start開かれたファイルの数はシステムファイルで定義されているように正常(1024)ではありませんlimits.conf
  • 設定した週間ジョブを実行するとcron(16,384)、正しい値が得られます。limits.conf
  • これを実行して/bin/su - userから再起動して
    も正しい値になります。

どういうわけか私のシステム値を取得し、bashスクリプト内に実際のログインシェルを持ち、サービスを手動で再起動する必要がある場合は、正しい数のオープンファイルを持つようにスクリプトを変更するソリューションが必要です。

現在のシェルの厳格な制限:

ulimit -Ha
open files                      (-n) 4096

グローバル:

cat /etc/security/limits.conf
oracle hard nofile 16384

問題:cronジョブを実行しているときに現在のシェルでスクリプトを実行すると、開いているファイル数は16384個です。/script.sh stop; ./script.sh start4096があります。問題は、スクリプトを手動で実行したときに16384を取得する方法です。

PSの編集bashrcbash_profile助けなしulimit -n <number>

ベストアンサー1

ルートのみが現在ハード制限を増やすことができます。おそらく、このユーザーのデフォルトの制限は/etc/security/limits.conf16384ですが、初期化ファイルの一部はこの制限を4096に設定します。

可能であれば、この初期化ファイルを変更してソフト制限のみを設定してください。すべてのユーザーはいつでも任意の方向にソフト制限を変更でき、唯一の制限はハード制限より高くすることはできません。ulimit -a 4096に置き換えられますulimit -Sa 4096

とにかく、あなたがすることは疑わしいです。サービスを実行しているユーザーとしてシェルを実行しないでください。必要に応じてsudo別の権限でコマンドを実行して、アカウントでそれらを維持する必要があります。したがって、サービスを開始するには使用しないで./script.sh stop;./catalina.sh startください。

sudo -u user ./script.sh stop; sudo -u user ./catalina.sh start

これにより、制限が低くなる可能性のある初期化ファイルは実行されません。

原則として、システム構成は、ログイン方法に応じてPAM(/etc/pam.confまたは)別の規則を介して/etc/pam.d/*異なる制限を設定できます。しかし、これは奇妙で珍しい構成です。

おすすめ記事