স্নো চিতাবাঘে সর্বাধিক সংখ্যক উন্মুক্ত ফাইল বর্ণনাকারী বৃদ্ধি করবেন?


101

আমি এমন কিছু করার চেষ্টা করছি যার জন্য বিপুল সংখ্যক ফাইল বর্ণনাকারী প্রয়োজন

sudo ulimit -n 12288তুষার চিতাবাঘ যতটা যেতে চায় তত উঁচু; এই ফলাফল অতিক্রম

/ usr / bin / ulimit: লাইন 4: ulimit: ফাইল খুলুন: সীমা পরিবর্তন করতে পারে না: অবৈধ যুক্তি।

আমি সংখ্যাটি আরও বেশি বাড়াতে চাই, 100000 বলুন it এটা কি সম্ভব?


4
এই প্রশ্নের উত্তরগুলি আরএসএক্স ম্যাভেরিক্সে আর কাজ করে না।
হাওয়ার্ড

2
দৌড়ানো echo limit maxfiles 10000 10000|sudo tee -a /etc/launchd.confএবং পুনরায় চালু করা আমার জন্য ম্যাভেরিক্সে কাজ করে।
Lri

উত্তর:


95

ulimitকমান্ডটি ব্যবহার করে কেবল বর্তমান শেল এবং তার শিশুদের জন্য রিসোর্স সীমা পরিবর্তিত হয় এবং sudo ulimitএকটি রুট শেল তৈরি করে, তার সীমাটি সামঞ্জস্য করে, এবং তারপরে প্রস্থান হয় (এভাবে আমি যতদূর দেখতে পাচ্ছি, কোনও বাস্তব প্রভাব নেই)।
12288 ছাড়িয়ে যাওয়ার জন্য, আপনাকে কার্নেলের kern.maxfilesএবং kern.maxfilesperprocপ্যারামিটারগুলি সামঞ্জস্য করতে হবে এবং কমপক্ষে ( এই ব্লগ এন্ট্রি অনুসারে , যা এই আলোচনার সংক্ষিপ্তসার হিসাবে ) লঞ্চ সীমাবদ্ধ করতে হবে। আপনি launchctl limitএগুলি একবারে সমন্বয় করতে ব্যবহার করতে পারেন :

sudo launchctl limit maxfiles 1000000 1000000

এটি স্থায়ী করতে (যেমন আপনি পুনরায় বুট করার সময় পুনরায় সেট করবেন না), এতে তৈরি করুন /etc/launchd.conf:

limit maxfiles 1000000 1000000

তারপরে আপনি নিজের প্রক্রিয়া সীমাটি সামঞ্জস্য করতে ulimit(তবে ছাড়াই sudo) ব্যবহার করতে পারেন ।

যদি এটি এটি না করে তবে আপনি কার্নেলের আকারের সীমাতে চলেছেন। যদি আপনার মডেল এটি সমর্থন করে তবে 64৪ -বিট মোডে কার্নেলটি বুট করতে সহায়তা করতে পারে।


1
sudo launchctl limit maxfiles 1000000 unlimited"ম্যাক্সফাইলস" এর জন্য শক্ত বা নরম সীমাও সীমাহীন হতে পারে না। উভয়ের জন্য দয়া করে একটি সংখ্যাসূচক প্যারামিটার ব্যবহার করুন।
থমাস হান্টার

2
সেই লাইনটি যুক্ত করার সময় সাবধানতা অবলম্বন করুন launchd.conf। আমি মনে করি সংখ্যাটি খুব কম হলে এটি আপনার কম্পিউটারকে অকেজো করে তুলতে পারে। উদাহরণস্বরূপ, আমি ব্যবহার করেছি limit maxfiles 1024 1024এবং আমার এটি পুনরায় পরিবর্তন করতে খুব কষ্ট হয়েছে।
শন

1
হায়রে: "প্রারম্ভিক বুট সময় চলার জন্য সাব কম্যান্ডগুলি চালানোর জন্য /etc/launchd.conf ফাইলটির আর পরামর্শ করা হয় না; সুরক্ষা বিবেচনার জন্য এই কার্যকারিতাটি সরানো হয়েছিল।"
এলিস পুরসেল

এটি কাজ করে না, আমি সফলভাবে সফলভাবে ওলিমিট-এসএন 10240 সেট করে দিলেও আমার এফডি সংখ্যা 6 কে ছাড়িয়ে যাবে না।
জিয়ান ওয়েইহং

@ জিয়ান ওয়েইহং এফডি সংখ্যাগুলি প্রতি প্রক্রিয়াধীন তাই আমি ধরে নিই যে অন্যান্য প্রক্রিয়াগুলি 4000 ফাইল খোলা আছে। আপনি কি Chrome চালানোর জন্য ঘটেন? ;)
ট্রেজকাজ

41

নিম্নলিখিতগুলির বেশিরভাগ সমাধানগুলি সমাধান করা উচিত (এবং তাদের শ্রেণিবিন্যাসের ভিত্তিতে তালিকাভুক্ত করা হয়েছে):

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. আফাইক আপনি ওএস এক্স এর অধীনে 'সীমাহীন' সীমাটি আর সেট করতে পারবেন না
  3. লঞ্চাক্টেল ম্যাক্সফাইলগুলি সিস্টেস্টেল ম্যাক্সফাইল দ্বারা আবদ্ধ এবং সেগুলি অতিক্রম করতে পারে না
  4. sysctl লঞ্চাক্টেল ম্যাক্সফাইল থেকে kern.maxfilesperproc উত্তরাধিকার বলে মনে হয়
  5. ulimit ডিফল্টরূপে লঞ্চক্টেল থেকে এটি 'ওপেন ফাইলগুলি' মান উত্তরাধিকার বলে মনে হয়
  6. আপনি / ইত্যাদি / প্রোফাইলে বা ~ /। প্রোফাইলের মধ্যে একটি কাস্টম ulimit সেট করতে পারেন; যদিও এটির প্রয়োজন নেই আমি একটি উদাহরণ সরবরাহ করেছি
  7. এগুলির মানগুলির ডিফল্টের সাথে তুলনা করার সময় এই মানগুলিকে খুব বেশি সংখ্যায় সেট করার সময় সতর্ক হন - বৈশিষ্ট্যগুলি স্থিতিশীলতা / সুরক্ষা উপস্থিত রয়েছে। আমি এই উদাহরণগুলি নিয়েছি যেগুলি আমি বিশ্বাস করি যুক্তিযুক্ত, অন্যান্য ওয়েবসাইটে লিখিত।

3
হায়রে: "প্রারম্ভিক বুট সময় চলার জন্য সাব কম্যান্ডগুলি চালানোর জন্য /etc/launchd.conf ফাইলটির আর পরামর্শ করা হয় না; সুরক্ষা বিবেচনার জন্য এই কার্যকারিতাটি সরানো হয়েছিল।"
এলিস পুরসেল

34

দেখে মনে হচ্ছে ওএস এক্স এর প্রতিটি সংস্করণের জন্য ওপেন ফাইলের সীমা পরিবর্তন করার জন্য সম্পূর্ণ আলাদা পদ্ধতি আছে!

ওএস এক্স সিয়েরার জন্য (10.12.X) আপনার প্রয়োজন:

১. 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> 

২. আপনার নতুন ফাইলের মালিক পরিবর্তন করুন:

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

3. এই নতুন সেটিংস লোড করুন:

sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist

৪. অবশেষে, সীমাটি সঠিক কিনা তা পরীক্ষা করুন:

launchctl limit maxfiles

2
এই উত্তরটি দুর্দান্ত, এবং আমি এটিতে এখানে যুক্ত করার জন্য কিছু পটভূমি পেয়েছি, @ নিনজাপিক্সেল: blog.dekstroza.io/ulimit-shenanigans-on-osx-el-capitan
ডিন র‌্যাডক্লিফ

20

দেখে মনে হচ্ছে যে ওএস এক্স সিংহ একটি মূল্য হিসাবে "সীমাহীন" অনুমতি দেবে না:

% 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

3
মানগুলির মধ্যে একটি যদি সীমাহীন হয় , -1মান হিসাবে ফলাফল হিসাবে ব্যবহার করে 12288। বৃহত্তর সংখ্যাসূচক মানগুলি ব্যবহার করা সম্ভব, যেমন sudo launchctl limit maxfiles 15000 150000। যদিও আমি নিশ্চিত না যে এই সেটিংগুলির তখন কোনও প্রভাব আছে।
ড্যানিয়েল বেক

8

ম্যাভেরিক্সে এটি সহজ। নিয়মিত ব্যবহারকারী হিসাবে:

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

2
আপনার সমাধান সংশোধন বিবেচনা করুন। আপনি 1024 এর একটি ইউলিমিট সেট করছেন, তারপরে আউটপুট ফাইল বর্ণনাকারীদের 8192 হিসাবে দেখানো হবে (1024 হওয়া উচিত)। আপনার পদ্ধতিটি সুডো ছাড়াই প্রবাদবাদীও বটে, এটি নিজের জন্য কয়েকবার পরিবর্তন করার চেষ্টা করুন।
y3sh

1
sudo এখানে ব্যবহার করা উচিত নয় তবে এই উত্তরটি ভুল। ম্যাভেরিক্স ব্যবহারকারীদের echo limit maxfiles 10000 10000|sudo tee -a /etc/launchd.confতাদের মেশিনটি ব্যবহার করা উচিত এবং তারপরে পুনরায় আরম্ভ করা উচিত
কাইল চাঁদা

3

উপর 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

1

কিছু সীমা দ্বারা পরিবর্তন করা যায় না ulimit, কারণ সেগুলি কেবলমাত্র বর্তমান শেলের ক্ষেত্রে প্রযোজ্য, তাই launchctlবিশ্বব্যাপী সীমা পরিবর্তন করতে কমান্ডটি ব্যবহার করা উচিত, যেমন

sudo launchctl limit maxfiles 100000 unlimited

দয়া করে মনে রাখবেন যে এই সীমাগুলিতে /etc/launchd.conf(অন্যান্য উত্তর হিসাবে প্রস্তাবিত) প্রয়োগ করা সাম্প্রতিক ম্যাকোস প্রকাশে আর সমর্থিত নয়। যদিও এখনও ব্যবহার করতে পারেন 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 সেটিংস চালিয়ে যেতে হয়?

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.