ওএস এক্স 10.7.1-এ সীমাবদ্ধ হওয়া "সিস্টেমে অনেকগুলি ওপেন ফাইল" সীমাবদ্ধতা থেকে আমার মুক্তি পাওয়ার দরকার।
কোন উপায় আছে?
ওএস এক্স 10.7.1-এ সীমাবদ্ধ হওয়া "সিস্টেমে অনেকগুলি ওপেন ফাইল" সীমাবদ্ধতা থেকে আমার মুক্তি পাওয়ার দরকার।
কোন উপায় আছে?
উত্তর:
মতে এই সহায়ক নিবন্ধ (যা আমি পড়া সুপারিশ):
ডিফল্টরূপে, ম্যাক ওএস এক্স যে ফাইলগুলি খুলতে পারে তার সর্বাধিক সংখ্যা 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
দ্রষ্টব্য: ওএস এক্স ১০.১০ বা তার চেয়ে কম ক্ষেত্রে আপনি /etc/launchd.conf
পছন্দ মতো সেটিং যুক্ত করতে পারেন limit maxfiles
এবং আপনি এখানে যা কিছু রেখেছিলেন তা এটি ওভাররাইড করবে।
আবার, নিবন্ধ থেকে:
একবার এটি হয়ে গেলে, কার্নেলটিতে নিজেই সর্বাধিক সংখ্যক ফাইল থাকবে তবে শেলটি নাও থাকতে পারে। এবং যেহেতু বেশিরভাগ প্রক্রিয়াগুলি এই অনেকগুলি ফাইল গ্রহণ করবে আপনি যে শেলটি বাড়িয়ে নিতে চান তা শেল দ্বারা শুরু করা হবে।
এর জন্য আদেশটি হ'ল:
ulimit -S -n 2048 # or whatever number you choose
সেই পরিবর্তনও অস্থায়ী; এটি কেবলমাত্র বর্তমান শেল সেশনের জন্য স্থায়ী। তুমি তোমার শেল কনফিগারেশন ফাইল (এটি যোগ করতে পারেন .bashrc
, .zshrc
যদি আপনি এটি আপনি একটি শেল ওপেন প্রত্যেক সময় চালাতে চান বা যাই হোক না কেন)।
kern.maxfiles=65000 kern.maxfilesperproc=65000
/etc/sysctl.conf এ রেখে পুনরায় বুট করেছি। kern.maxfiles উপেক্ষা করা হয়েছিল এবং ডিফল্ট থেকে যায় তবে kern.maxfilesperproc 65000 সেট করা হয়েছিল I
দেখে মনে হচ্ছে ওএস এক্স এর প্রতিটি সংস্করণের জন্য ওপেন ফাইলের সীমা পরিবর্তন করার জন্য সম্পূর্ণ আলাদা পদ্ধতি আছে!
ওএস এক্স সিয়েরার জন্য (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>
২. আপনার নতুন ফাইলের মালিক পরিবর্তন করুন:
sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
3. এই নতুন সেটিংস লোড করুন:
sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
৪. অবশেষে, সীমাটি সঠিক কিনা তা পরীক্ষা করুন:
launchctl limit maxfiles
IO Error: Bad file descriptor (Write failed)
আপনাকে নিজের উলিমিট সেটিংস বাড়িয়ে তুলতে হবে - এটি ওএস এক্সের তুলনায় খুব কম - ডিফল্টরূপে 256। ulimit -n 4096
আপনার ~ /। প্রোফাইল বা সমতুল্য যোগ করুন বা এর অনুরূপ এবং এটি আপনার স্থানীয় পরিবেশে এটি সমাধান করবে। চালান ulimit -a
আপনার বর্তমান মাত্রা পরীক্ষা করতে
সিস্টেম সেটিংস দেখতে, এটি চালান:
launchctl limit maxfiles
এটি আগের হিসাবে প্রক্রিয়া ভিত্তিতে সিংহের (10240) বেশ খানিকটা উঁচুতে সেট করা হয়েছে। আপনি যদি এখনও সেখানে আঘাত করে থাকেন তবে আপনি পছন্দসই স্তরগুলির সাথে একই কমান্ডটি ব্যবহার করে এটি উচ্চতর সেট করতে পারেন। পরিবর্তনগুলি স্থায়ী করতে /etc/launchd.conf সেখানে আপনার প্রাসঙ্গিক লাইন যুক্ত করতে হবে।
ulimit -a
)।
অন্য বিকল্পটি অপরাধীর সন্ধান করতে পারে:
sudo lsof -n | cut -f1 -d' ' | uniq -c | sort | tail
সর্বশেষের জন্য আপনি দেখতে পাচ্ছেন কোন ফাইলগুলি খোলা আছে:
sudo lsof -n | grep socketfil
এবং ইচ্ছা করলে প্রক্রিয়াটি মেরে ফেলুন
kill $pid
মন্তব্য থেকে:
এটির জন্য প্রয়োজনীয়, আপনি সর্বাধিক উন্মুক্ত ফাইল ব্যবহার করে প্রসেস আইডির একটি তালিকাও পেতে পারেন
lsof -n | sed -E 's/^[^ ]+[ ]+([^ ]+).*$/\1/' | uniq -c | sort | tail
-h
ওএস (এক্স এক্স 10.12.3) ছাড়াই ভাল কাজ করেছে :sudo lsof -n | cut -f1 -d' ' | uniq -c | sort | tail
-h
lsof -n +c 0
ছাঁটাই প্রক্রিয়া নাম প্রতিরোধ করতে ব্যবহার করুন ।
ভাবেন, ম্যাভেরিক্সে 10.9.4
ulimit -n 2048
ঠিকভাবে কাজ করে. আপনার একটি নতুন লগইন সেশন আরম্ভ করার প্রয়োজন হতে পারে।
সর্বশেষ ম্যাকোসের জন্য (লেখার সময়: 10.14.1), আপনি ব্যবহার করতে পারেন sudo launchctl limit maxfiles 64000 524288
(ডিফল্টরূপে এটি 256 ছিল) তবে এটি কেবল বর্তমান অধিবেশনে কাজ করে। স্থায়ী সমাধানের জন্য launchctl
@ নিনজাপিক্সেল ( https://superuser.com/a/1171028/760235 ) থেকে চাকরীটি ব্যবহার করুন ।
আপনি চালাতে পারেন
lsof -n
যা অনেকগুলি ফাইল খোলার প্রক্রিয়া করে।
তারপর এটি হত্যা।
অথবা
sysctl -w kern.maxfiles=20480
এটিকে বড় করে পরিবর্তন করুন।
আমার জাভা উপরের সমস্ত পরিবর্তন পরে 10000 ফাইল বেশি করে না। সমাধানটি ছিল এই জেভিএম ফ্ল্যাগ- এক্সএক্স: -ম্যাক্সএফডি লিমিট
Chmod -R করার সময় আমি এটির মুখোমুখি হয়েছি তাই আমি ছোট পদক্ষেপ গ্রহণ করে এটি প্রায় পেয়েছিলাম, যেমন eg
# for each directory
find . -type d -exec chmod 755 {} \;
অনুরূপ https://superuser.com/a/1171028/367819
আপনার ম্যাক ওএস এক্স সিস্টেমে বর্তমান সীমা পরীক্ষা করতে, চালান:
launchctl limit maxfiles
শেষ দুটি কলাম যথাক্রমে নরম এবং শক্ত সীমা।
ম্যাক ওএস এক্স ইয়োসেমাইটে সিস্টেম-ভিত্তিতে ওপেন ফাইল সীমাটি সামঞ্জস্য করতে আপনাকে অবশ্যই দুটি কনফিগারেশন ফাইল তৈরি করতে হবে। প্রথমটি হল /Library/LaunchDaemons/limit.maxfiles.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 এ সেট করবে The দ্বিতীয় প্লাস্ট কনফিগারেশন ফাইলটি নিম্নলিখিত বিষয়বস্তুগুলির সাথে /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>
দুটি প্লাস্ট ফাইলই রুট: চাকা দ্বারা মালিকানাধীন থাকতে হবে এবং এর অনুমতি থাকতে হবে - rw-r - r--। এই অনুমতিগুলি ডিফল্টরূপে জায়গায় হওয়া উচিত, তবে আপনি sudo chmod 644 চালিয়ে নিশ্চিত করতে পারেন যে সেগুলি সেগুলিতে রয়েছে। যদিও উপরে বর্ণিত পদক্ষেপগুলি সিস্টেম-প্রশস্ত ওপেন ফাইল সীমাটিকে পুনরায় চালু করার সময় সঠিকভাবে সেট করতে বাধ্য করবে, আপনি সেগুলি লঞ্চাক্টল সীমাটি চালিয়ে নিজে প্রয়োগ করতে পারেন।
সিস্টেম পর্যায়ে এই সীমাবদ্ধতা নির্ধারণের পাশাপাশি, আমরা আপনার বাশারসিআর, বাশপ্রোফাইল বা অ্যানালোগুলি ফাইলটিতে নিম্নলিখিত লাইনগুলি সংযোজন করে অধিবেশন স্তরে সীমা নির্ধারণ করার পরামর্শ দিচ্ছি:
ulimit -n 200000
ulimit -u 2048
প্লাস্ট ফাইলগুলির মতো আপনার বাশার্ক বা অনুরূপ ফাইলের -rw-r - r-- অনুমতি থাকা উচিত। এই মুহুর্তে, আপনি আপনার কম্পিউটারটি পুনরায় চালু করতে পারেন এবং আপনার টার্মিনালে ইউলিমিট-এন প্রবেশ করতে পারেন। যদি আপনার সিস্টেমটি সঠিকভাবে কনফিগার করা থাকে তবে আপনার দেখতে হবে যে ম্যাক্সফাইলগুলি 200000 এ সেট করা হয়েছে।
আপনি আরও তথ্যের জন্য এই নিবন্ধটি অনুসরণ করতে পারেন।
https://gist.github.com/tombigel/d503800a282fcadbee14b537735d202c
মানগুলি কার্যকর করতে আপনার ম্যাক পুনরায় চালু করতে ভুলবেন না।