プロセスは、ハード制限セットよりも高いオープンファイル記述子制限を持つことができますか?

プロセスは、ハード制限セットよりも高いオープンファイル記述子制限を持つことができますか?

使っていますソラリス11私が理解したところ、権限のないユーザーは、ハード制限内で最大開かれたファイル記述子のソフト制限を増減できます。権限のないユーザーもハード制限を減らすことができますが、減らした後は増やすことはできません。

次のシナリオを進めています。以下のコマンドを使用して、ソフトおよびハード制限を設定した権限を持たないユーザーがいますulimit

ソフト制限:10000

ハード制限:10000

-bash-4.4$ ulimit -n
10000
-bash-4.4$ ulimit -Hn
10000
-bash-4.4$ ulimit -Sn
10000

つまり、ユーザーは最大オープンファイル記述子制限が10,000を超えるプロセスを開始できないはずです。ただし、開かれたファイル記述子の制限が高い同じユーザーで実行されるプロセスの一部は説明できません。そのようなプロセスが複数実行されています。

-bash-4.4$ plimit 12553
12553:  
   resource              current         maximum
  time(seconds)         unlimited       unlimited
  file(blocks)          unlimited       unlimited
  data(kbytes)          unlimited       unlimited
  stack(kbytes)         8192            unlimited
  coredump(blocks)      unlimited       unlimited
  nofiles(descriptors)  65536           65536
  vmemory(kbytes)       unlimited       unlimited

これはJavaプロセスであり、以下で実行されます。ソラリス地区。親プロセスはですzsched。提供されるすべての情報は、この領域内で提供されます。処理命令も以下に示す。

java -d64 -DAppName=java_app -server -Xms2048m -Xmx6144m -Xmn2040m - 

プロセス自体と起動方法に関する情報はあまりありません。権限のないユーザーがより高いファイル記述子制限を使用できるようにする特定のシナリオがありませんか?

私の仮説:

この情報は役に立ちます。そのマシンで、/etc/profile次のコマンドを使用してファイルに制限を設定します。

ulimit -n 10000

これは、ユーザーがログインするたびにファイルが呼び出され、制限が適用されることを意味します。私の前提は、そのようなプロセスが通常の対話型ログインまたは非ログインシェルを使用して開始されない可能性があることです。対話型ログインと対話型非ログインシェルの両方で呼び出されるので/etc/profile(私の観察によると)、このシェルで開始されたプロセスはより高いファイル記述子制限を持ってはいけません。

これは、スクリプトやcronなどの非対話型シェルを呼び出す必要がない/etc/profileため、他の基本的な制限が使用される可能性があるためです。しかし、このようなプロセスで見ると、これらのシナリオは起こる可能性がほとんどないようです。他の可能性はありますか?

私たちはSolarisをサポートしていますが、コミュニティはあまり役に立たないので、助けを得るためにこれらのフォーラムに頼っています。

答え1

あなたの要求に正確に従うかどうかわかりません。

SAがCOTS製品(通常はデータベース)またはカスタムアプリケーションの/ etc / profileにulimitエントリを追加する可能性があります。

plimitによって異なる値が表示されるのは、ユーザー/アプリケーションが異なる値を設定したか、異なるリソース制御メカニズムによって選択された可能性があるためです。つまり、/etc/project

関連情報