ulimit -a
で、システムのソフト リミットとハード リミットを確認できます。 コマンド。
ソフト制限はすべてのユーザーが設定できますが、ハード制限はルートのみが変更できます。制限はプロセスのプロパティです .これらは子プロセスの作成時に継承されるため、システム全体の制限は init スクリプトでのシステムの初期化中に設定する必要があり、ユーザーの制限は pam_limits
などを使用してユーザー ログイン中に設定する必要があります。 .
多くの場合、マシンの起動時にデフォルトが設定されています。そのため、個々のシェルで ulimit をリセットしても、再起動時に以前の値にリセットされることがあります。デフォルトを変更したい場合は、存在する ulimit コマンドのブート スクリプトを grep することをお勧めします。
制限が 1024 の場合、ユーザー/プロセスが最大 1024 個のファイルを開くことができることを意味します。この制限を超えると、open
を意味します 、 pipe
そして dup
システムコールは失敗します:
RLIMIT_NOFILE:
このプロセスで開くことができるファイル記述子の最大数より 1 大きい値を指定します。試行 (open(2)
、 pipe(2)
、 dup(2)
など) この制限を超えると、エラー EMFILE
が発生します .
開いているファイルの記述子の数です プロセスごと .それらはすべて、同じファイルまたは異なるファイルを参照できます。
ulimit -a
で現在の制限を確認できます シェルで、または getrlimit
でプログラム的に .システム全体の制限は /etc/security/limits.conf
に設定されています .
Linux のファイル システム オブジェクト モデルは次のとおりです。
file descriptor -> file description -> dentry -> inode
<オール>
dup
同じファイル記述に新しいファイル記述子を作成します。open
新しいファイル記述子とファイル記述を作成します。