سؤال زيادة الحد الأقصى لعدد واصفات الملفات المفتوحة في Snow Leopard؟


أحاول القيام بشيء يتطلب عددًا كبيرًا من واصفات الملفات

sudo ulimit -n 12288 عالية مثل سنو ليوبارد يريد الذهاب ؛ ما وراء هذه النتائج

/ usr / bin / ulimit: السطر 4: ulimit: الملفات المفتوحة: لا يمكن تعديل الحد: وسيطة غير صالحة.

أريد رفع الرقم أعلى بكثير ، لنفترض 100000. هل هذا ممكن؟


96
2018-06-27 10:56


الأصل


لم تعد إجابات هذا السؤال تعمل في OSX Mavericks. - Howard
جري echo limit maxfiles 10000 10000|sudo tee -a /etc/launchd.conf وإعادة تشغيل لي في مافريكس. - user495470


الأجوبة:


عن طريق 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) لضبط حد العملية.

إذا لم يفلح ذلك ، فقد تكون قيد التشغيل حدود حجم في kernel. إذا طرازك يدعمها، تمهيد النواة في وضع 64 بت قد يساعد.


90
2018-06-27 21:17



sudo launchctl limit maxfiles 1000000 unlimited لا يمكن أن يكون الحد الثابت أو الناعم لـ "maxfiles" غير محدود. الرجاء استخدام معلمة رقمية لكل منهما. - Thomas Hunter
كن حذرا عند إضافة هذا الخط ل launchd.conf. أعتقد أنه إذا كان الرقم صغيرًا جدًا ، فقد يجعل الكمبيوتر غير قابل للاستخدام. على سبيل المثال ، اعتدت limit maxfiles 1024 1024 وكان لدي صعوبة في تغييرها مرة أخرى. - Shawn
للأسف: "لم يعد تتم مراجعة الملف /etc/launchd.conf حتى يتم تشغيل الأوامر الفرعية أثناء وقت التمهيد المبكر ؛ تمت إزالة هذه الوظيفة بسبب اعتبارات الأمان." - Alice Purcell
لا يعمل ، لا يمكن أن يتجاوز عدد FD لي 6k حتى لو قمت بتعيين ulimit -Sn 10240 بنجاح. - Jian Weihang
أرقام FDJianWeihang @ هي في العملية لذلك أفترض أن العمليات الأخرى حدث لديها 4000 ملف مفتوح. هل يحدث لتشغيل كروم؟ ؛) - Trejkaz


يجب أن يقوم ما يلي بحل معظم الحلول (ويتم سردها حسب ترتيبها):

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

ملاحظات:

  1. ستحتاج إلى إعادة تشغيل هذه التغييرات حتى تصبح سارية المفعول.
  2. AFAIK لم يعد بإمكانك وضع حدود "غير محدودة" ضمن OS X
  3. الحد الأقصى maxfiles يحدها maxfiles sysctl ، و لذلك لا يمكن تجاوزها
  4. يبدو sysctl ترث kern.maxfilesperproc من launchctl maxfiles
  5. يبدو أن ulimit يرث قيمة "الملفات المفتوحة" من launchctl بشكل افتراضي
  6. يمكنك تعيين ulimit مخصصة داخل / etc / profile أو ~ /. في حين أن هذا غير مطلوب ، فقد قدمت مثالاً
  7. كن حذرًا عند تعيين أي من هذه القيم على عدد كبير جدًا عند مقارنتها بالتخلف الافتراضي - فالميزات موجودة في الاستقرار / الأمان. لقد أخذت هذه الأمثلة التي أعتقد أنها معقولة ، مكتوبة على مواقع أخرى.

41
2017-12-03 12:07



للأسف: "لم يعد تتم مراجعة الملف /etc/launchd.conf حتى يتم تشغيل الأوامر الفرعية أثناء وقت التمهيد المبكر ؛ تمت إزالة هذه الوظيفة بسبب اعتبارات الأمان." - Alice Purcell


يبدو أن هناك طريقة مختلفة تمامًا لتغيير حد الملفات المفتوحة لكل إصدار من OS X!

لنظام التشغيل OS X سييرا (10.12.X) تحتاج إلى:

1. في Library/LaunchDaemons إنشاء ملف مسمى limit.maxfiles.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.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

28
2018-01-24 14:50



هذه الإجابة رائعة ، ووجدت بعض الخلفية لإضافتها هنا ،ninjaPixel: blog.dekstroza.io/ulimit-shenanigans-on-osx-el-capitan - Dean Radcliffe


يبدو أن 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

20
2017-12-10 10:11



إذا كانت واحدة من القيم غير محدودباستخدام -1 كما ينتج عن القيمة في 12288. من الممكن استخدام قيم رقمية أكبر ، على سبيل المثال ، sudo launchctl limit maxfiles 15000 150000. لست متأكدًا من أن هذه الإعدادات لها تأثير على الرغم من ذلك. - Daniel Beck♦


على مافريكس بسيط لها. كمستخدم منتظم:

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

7
2017-09-04 15:44



النظر في إعادة النظر في الحل الخاص بك. يتم تعيين ulimit من 1024 ، ثم إظهار واصفات ملف الإخراج كـ 8192 (يجب أن يكون 1024). أنت مقاربة هي أيضا probelmatic دون sudo ، حاول تغييرها عدة مرات لنفسك. - y3sh
لا يجب استخدام sudo هنا ولكن هذه الإجابة غير صحيحة. المستخدمين مافريكس يجب أن تستخدم echo limit maxfiles 10000 10000|sudo tee -a /etc/launchd.conf ثم قم بإعادة تشغيل الجهاز الخاص بهم - Kyle Chadha


لا يمكن تغيير بعض الحدود بواسطة ulimit، لأنها تنطبق فقط على القشرة الحالية ، لذلك launchctlيجب استخدام الأمر لتغيير الحدود على مستوى العالم ، على سبيل المثال ،

sudo launchctl limit maxfiles 100000 unlimited

يرجى ملاحظة أن تطبيق هذه الحدود في /etc/launchd.conf (كما هو مقترح في إجابات أخرى) لم يعد مدعومًا في إصدارات MacOS الأخيرة. على الرغم من ما زال يمكن استخدامها launchd.plist (نرى: man launchd.plist) مثل كل مستخدم أو على مستوى النظام بأكمله plist ملفات التكوين كما هو مقترح هنا و هناك.


لجعل هذه الحدود الثابتة ، يمكنك استخدامها /etc/sysctl.conf ملف وإضافتها على سبيل المثال:

kern.maxprocperuid=1000
kern.maxproc=2000
kern.maxfilesperproc=20000
kern.maxfiles=50000

لتغييرات تأخذ التأثير ، فإنه يتطلب إعادة التشغيل.

للاطلاع على الحدود الحالية ، شغل: launchctl limit أو sysctl -a | grep ^kern.max.

أنظر أيضا: كيف تستمر إعدادات ulimit في macOS؟


0
2017-07-29 13:27