ユーザーとして実行されているプロセスがあり、golden
そのユーザーが開始したすべてのプロセスがその設定を使用する必要があるように、そのユーザーの開かれたファイル制限を増やそうとします。制限を次のファイルに変更しましたが、変更は適用されませんでした。
/etc/security/limits.conf:
* soft nofile 65535
* hard nofile 100000
*
上記のようにワイルドカードの制限を変更して、すべてのユーザーの設定を変更しました。今、私はゴールドユーザーとしてプロセスを起動し、catコマンドで実行しましたが、8092
開かれたファイルとして使用されることを確認しましたが、なぜ変更が適用されないのかわかりません。
golden@machineA:~$ cat /proc/1442/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size unlimited unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 483036 483036 processes
Max open files 8092 8092 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 483036 483036 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
Ubuntu 14.04ボックスを使用しています。ここで何が起こっているのかご存知ですか?golden
ユーザーが開始したすべてのプロセスが新しいオープンファイル構成を使用できるようにするにはどうすればよいですか。 8092は値をオーバーライドしないため、どこかにハードコードされているようです。
cat /proc/sys/fs/file-max
6145946
答え1
/etc/limits
ログイン時に設定されます。ここで行った変更は、プロセスの開始時ではなく、ユーザーがログインしたときに適用されます。プロセスを開始するための構成はありません。プロセスは親プロセスの制限を継承します。
プロセスは常に限界を下げることを選択できます。ログインセッションを開始し、ulimit -a
シェルで実行して上限を確認し、プロセスを実行するとその殻に、プロセスの限界は最終的に減少します。これは、プロセスの制限が低くなることを意味します。その場合は、プログラム構成を調べてこれを防ぐことができるかどうかを確認する必要があります。