LoginSignup
20
18

More than 5 years have passed since last update.

Linux_ファイルディスクリプタ数の上限

Last updated at Posted at 2017-04-09

Linux では、同時にオープンすることができるファイルディスクリプタ数が制限されています。
ひとつのプロセス内で多くのファイルオープンをする必要がある場合、この制限に引っかかって、次のようなエラーが起きることがあります。

cannot make pipe for process substitution: Too many open files

これを回避する方法です。

どうすればいいのか?

3つの解決策がある(らしい)
1. カーネルヘッダファイル中の INR_OPEN の値を書き変えて rebuild する
2. ulimit -n を使って、一時的に制限を変更する
3. /etc/security/limits.conf の設定を書き変え、制限を変更する

カーネルの rebuild は大変なので、1. の手段は却下です。

今回は小さめのシステムであるため、 /etc/security/limits.conf を書き変える方向で行きます。

/etc/security/limits.conf を書き変える

このファイルのフォーマットは次のようになっています。

<domain> <type> <item> <value>

次のように追記することで、全ユーザが実行するプロセスごとの最大ファイル数が 2048 とすることができます。

* soft nofile 2048
* hard nofile 2048

PAM認証を通らないとこの設定が適用されない。などなど注意すべきことがありますが、参考記事が詳しいのでそちらを参照してください。

参考記事

20
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
18