大量のファイルディスクリプタが必要なものをやろうとしています
sudo ulimit -n 12288
は、Snow Leopardが行きたいと思っているのと同じくらいの高さで、これを超えると結果が出ます
/usr/bin/ulimit: 4行目: ulimit: ファイルを開く: 変更できません limit: 無効な引数です
もっともっと高く、例えば100000とかにしたいです。それは可能でしょうか?
106 Chris Poole 2011-06-27
ulimit
コマンドを使うと、現在のシェルとその子孫のリソース制限を変更するだけで、sudo ulimit
はルートシェルを作成し、制限を調整してから終了します (私が見た限りでは、実際には何の効果もありません)。 12288 を超えるためには、カーネルの kern.maxfiles
と kern.maxfilesperproc
のパラメータを調整する必要があり、また (少なくとも このブログ記事 によると、この議論 の要約である) launchd の制限を調整する必要があります。これらを一度にすべて調整するには、launchctl limit
を使用します
sudo launchctl limit maxfiles 1000000 1000000
これを恒久的なものにするには (つまり再起動時にリセットされないようにするには)、/etc/launchd.conf
を作成してください
limit maxfiles 1000000 1000000
そして、ulimit
(ただし、sudo
を使用せずに) を使用して、プロセスの制限を調整することができます
これでうまくいかない場合は、カーネルのサイズ制限に遭遇している可能性があります。お使いのモデルがサポートしている場合は、64 ビットモードでカーネルを起動するとよいでしょう
99 Gordon Davisson 2011-06-27
以下は、ほとんどの解決策を解決するはずです(そして、その階層の順にリストアップされています)
echo 'kern.maxfiles=20480' | sudo tee -a /etc/sysctl.conf
echo -e 'limit maxfiles 8192 20480\nlimit maxproc 1000 2000' | sudo tee -a /etc/launchd.conf
echo 'ulimit -n 4096' | sudo tee -a /etc/profile
Notes:
- これらの変更を有効にするには、再起動する必要があります
- AFAIKでは、OS Xでは「無制限」に制限を設定することができなくなりました
- launchctl maxfiles は sysctl maxfiles によって制限されているので、それを超えることはできません
- sysctl は launchctl maxfiles から kern.maxfilesperproc を継承しているようです
- ulimit はデフォルトで launchctl の ‘open files’ 値を継承しているようです
- etc/profile や ~/.profile でカスタム ulimit を設定することができます
- それらのデフォルトと比較したときに非常に高い数字にこれらの値のいずれかを設定するときに注意してください – 機能は安定性/セキュリティが存在します。私は他のウェブサイトに書かれている、私は合理的であると信じているこれらの例の数字を取ってきました
42 errant.info 2012-12-03
OS Xのバージョンごとに開いているファイルの制限を変える方法が全く違うようです
OS X Sierra(10.12.X)の場合は必要です
1.Library/LaunchDaemons
でlimit.maxfiles.plist
という名前のファイルを作成し、以下のように貼り付けます(ソフトリミットとハードリミットの2つの数字は自由に変更してください)
<?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.新しいファイルの所有者を変更します
sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
3.これらの新しい設定をロードします
sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
4.最後に、限界値が正しいかどうかを確認します
launchctl limit maxfiles
38 ninjaPixel 2017-01-24
OS X Lionでは「無制限」を値として許可しないようです
% sudo launchctl limit maxfiles 8192 unlimited
Neither the hard nor soft limit for "maxfiles" can be unlimited. Please use a numeric parameter for both.
ソフトリミットとハードリミットの両方に数値を提供することで機能します
% sudo launchctl limit maxfiles 4096 8192
21 crishoj 2011-12-10
Mavericksではシンプルです。常用者として
ulimit -n 8192
から更新された設定を確認することができます
ulimit -a
私のマシンで
ulimit -a
-t: cpu time (seconds) unlimited
-f: file size (blocks) unlimited
-d: data seg size (kbytes) unlimited
-s: stack size (kbytes) 8192
-c: core file size (blocks) 0
-v: address space (kbytes) unlimited
-l: locked-in-memory size (kbytes) unlimited
-u: processes 709
-n: file descriptors 8192
9 Clustermagnet 2014-09-04
OS X 10.13.6では、これは私のために動作します
$ sysctl kern.maxfiles
kern.maxfiles: 12288
$ sysctl kern.maxfilesperproc
kern.maxfilesperproc: 10240
$ sudo sysctl -w kern.maxfiles=1048600
kern.maxfiles: 12288 -> 1048600
$ sudo sysctl -w kern.maxfilesperproc=1048576
kern.maxfilesperproc: 10240 -> 1048576
$ ulimit -S -n
256
$ ulimit -S -n 1048576
$ ulimit -S -n
1048576
3 Petr Javorik 2018-12-21
いくつかの制限は現在のシェルにしか適用されないため、ulimit
では変更できないものもありますので、launchctl
コマンドを使ってグローバルに制限を変更する必要があります
sudo launchctl limit maxfiles 100000 unlimited
/etc/launchd.conf
(他の回答で示唆されているように) でこれらの制限を適用することは、最近の macOS リリースではサポートされていないことに注意してください。こちら, こちら, こちら, こちら のように、ユーザ単位やシステム全体の plist
設定ファイルなど、launchd.plist
(参照: man launchd.plist
) を使用することはできますが
これらの制限を永続化するには、/etc/sysctl.conf
ファイルを使用して、例えば追加します
kern.maxprocperuid=1000
kern.maxproc=2000
kern.maxfilesperproc=20000
kern.maxfiles=50000
変更を有効にするには、再起動が必要です
現在の制限値を見るにはlaunchctl limit
またはsysctl -a | grep ^kern.max
を実行してください
こちらも参照してください。macOSでulimitの設定を持続させるには?
2 kenorb 2017-07-29