2012-06-07 08:52:49 +0000 2012-06-07 08:52:49 +0000
202
202

OS X 10.7.1の "システムで開いているファイルが多すぎる "エラーの修正はありますか?

私はOS X 10.7.1. 

方法はありますか?

回答 (10)

234
234
234
2012-06-29 20:23:19 +0000

この便利な記事](http://krypted.com/mac-os-x/maximum-files-in-mac-os-x/)(私が読むことをお勧めします)によると:

デフォルトでは、Mac OS Xが開くことができるファイルの最大数は12,288に設定されており、特定のプロセスが開くことができるファイルの最大数は10,240であることを確認してください。

あなたはこれらをチェックすることができます:

  • sysctl kern.maxfiles
  • sysctl kern.maxfilesperproc

あなたは(あなた自身のリスクで)で制限を増やすことができます。

  • sysctl -w kern.maxfiles=20480 (またはあなたが選ぶ何でも数)
  • sysctl -w kern.maxfilesperproc=18000 (またはあなたが選ぶ何でも数)

変更を永久にするためには、このような sudo (あなたが作成しなければならないかもしれない) にあなたの設定を置くのに /etc/sysctl.conf を使用して下さい:

kern.maxfiles=20480
kern.maxfilesperproc=18000

注意: OS X 10.10 で。 10 以下では、/etc/launchd.conf のように limit maxfiles に設定を追加すれば、ここに入れたものは何でも上書きされます。

再度、記事より:

ここまでやってしまえば、カーネル自体はファイル数の上限がありますが、シェルはそうではないかもしれません。

そのためのコマンドは次のとおりです:

ulimit -S -n 2048 # or whatever number you choose

この変更も一時的なもので、現在のシェルセッションの間だけ持続します。シェルを開くたびに実行させたい場合は、シェル設定ファイル (.bashrc, .zshrc など) に追加することができます。

63
63
63
2017-01-24 14:56:37 +0000

OS Xのバージョンごとに開くファイルの制限を変更する方法が全く違うようです!

OS X Sierra(10.12.X)の場合は以下のようにしてください:

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"  
        "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">  
  <dict>
    <key>Label</key>
    <string>limit.maxfiles</string>
    <key>ProgramArguments</key>
    <array>
      <string>launchctl</string>
      <string>limit</string>
      <string>maxfiles</string>
      <string>64000</string>
      <string>524288</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>ServiceIPC</key>
    <false/>
  </dict>
</plist>

*2. */Library/LaunchDaemons/limit.maxfiles.plistでファイルを作成し、以下のように貼り付けてください(ソフトリミットとハードリミットの2つの数字を自由に変更してください):

sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist

2.新しいファイルの所有者を変更してください: sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist

3.これらの新しい設定をロードしてください: launchctl limit maxfiles

4.最後に正しいチェックをしてください。 ** 新しいファイルの所有者を変更します:

&001

3.これらの新しい設定をロードします:

&001

4.最後に、制限が正しいことを確認してください:

&001

34
34
34
2012-06-07 11:09:52 +0000

ulimitの設定を上げる必要があるでしょう - 最近のOS Xではかなり低くなっています - デフォルトでは256です。これでローカル環境では解決するでしょう。現在のレベルを確認するために ulimit -n 4096 を実行

システム設定を確認するには、これを実行します:

launchctl limit maxfiles

これは、ライオンでは、それが使用されていたよりもプロセスごとのベースでかなり高い(10240)に設定されています。しかし、それでもまだそこでヒットしているのであれば、同じコマンドを使って希望のレベルでより高く設定することができます。変更を恒久的なものにするには、/etc/launchd.conf に関連する行を追加する必要があります。

34
34
34
2017-02-18 00:42:52 +0000

他のオプションは、犯人を見つけることかもしれません:

sudo lsof -n | cut -f1 -d' ' | uniq -c | sort | tail

最後の1つについては、どのようなファイルが開いているかを見ることができます:

sudo lsof -n | grep socketfil

そして、そうすればプロセスを殺すことが望ましい

kill $pid

コメントから:

それが何の価値があるかについては、あなたはまた、

lsof -n | sed -E 's/^[^]+[]+([^]+).*$//' | uniq -c | sort | tail
```を使用して最も開いているファイルを持つプロセスIDのリストを得ることができます
10
10
10
2014-09-04 16:19:11 +0000

皆さん、Mavericks 10.9.4

ulimit -n 2048では問題なく動作します。新しいログインセッションを起動する必要があるかもしれません。

5
5
5
2018-11-23 16:59:24 +0000

最新のmacOS(執筆時点: 10.14.1)では、sudo launchctl limit maxfiles 64000 524288(デフォルトでは256)が使えますが、現在のセッション内でしか動作しません。恒久的な解決策としては、@ninjaPixel https://superuser.com/a/1171028/760235 ) の launchctl ジョブを使用してください。

1
1
1
2017-05-18 02:52:29 +0000

あなたは、プロセスがあまりにも多くのファイルを開いている

lsof -n

を実行することができます。

sysctl -w kern.maxfiles=20480

は、それを殺す。

1
1
1
2019-01-25 13:15:52 +0000

上記のすべての変更の後、私のjavaは10000以上のファイルを作成しませんでした。解決策は、このjvmフラグ-XX:-MaxFDLimitでした。

0
0
0
2019-05-29 17:55:40 +0000

同様に https://superuser.com/a/1171028/367819

あなたのMac OS Xシステム上の現在の制限をチェックするには、実行します:

launchctl limit maxfiles

最後の2つの列は、それぞれソフトとハードの制限です。

Mac OS X Yosemiteでシステム全体のベースでオープンファイルの制限を調整するには、2つの設定ファイルを作成する必要があります。最初は、/Library/LaunchDaemons/limit.maxfiles.plist のプロパティリスト(別名 plist)ファイルで、次の XML 設定が含まれています:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  <plist version="1.0">
    <dict>
      <key>Label</key>
        <string>limit.maxfiles</string>
      <key>ProgramArguments</key>
        <array>
          <string>launchctl</string>
          <string>limit</string>
          <string>maxfiles</string>
          <string>200000</string>
          <string>200000</string>
        </array>
      <key>RunAtLoad</key>
        <true/>
      <key>ServiceIPC</key>
        <false/>
    </dict>
  </plist>

これは、オープンファイルの制限を 200000 に設定します。2 番目の plist 設定ファイルは、次の内容を含む /Library/LaunchDaemons/limit.maxproc.plist に格納されるべきです:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple/DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  <plist version="1.0">
    <dict>
      <key>Label</key>
        <string>limit.maxproc</string>
      <key>ProgramArguments</key>
        <array>
          <string>launchctl</string>
          <string>limit</string>
          <string>maxproc</string>
          <string>2048</string>
          <string>2048</string>
        </array>
      <key>RunAtLoad</key>
        <true />
      <key>ServiceIPC</key>
        <false />
    </dict>
  </plist>

両方の plist ファイルは、root:wheel によって所有され、パーミッション -rw-r–r– を持っていなければなりません。このパーミッションはデフォルトで設定されているはずですが、sudo chmod 644 を実行することで設定されていることを確認することができます。上で説明した手順により、再起動時にシステム全体のオープンファイルの制限が正しく設定されるようになりますが、 launchctl limit を実行することで、手動で制限を適用することができます。この時点で、コンピュータを再起動し、ターミナルに ulimit -n と入力します。システムが正しく設定されていれば、maxfiles が 200000 に設定されていることがわかるはずです。


詳細はこちらの記事をご覧ください。

0
0
0
2016-12-14 18:50:26 +0000

私は chmod -R を実行しているときにこれに遭遇したので、

# for each directory
find . -type d -exec chmod 755 {} \;
``` のように小さなステップを踏むことで回避できました。