কেন এটি নন-রুট ব্যবহারকারীর জন্য 4096 সর্বাধিক খোলা ফাইলগুলি পাবে না?


13

nofileএই সমস্যা সম্পর্কিত প্রতিটি স্ট্যাকএক্সচেঞ্জ উত্তর অনুসরণ করেও আমি উবুন্টু ১৪.০৪-তে নন-রুট ব্যবহারকারীদের সীমাটি বাড়িয়ে তুলতে পারি না । এখন পর্যন্ত আমার কাছে রয়েছে:

$ cat /etc/security/limits.d/custom.conf
@www-data hard nofile 50000
@www-data soft nofile 50000
# even tried specifying the username directly:
myuser hard nofile 50000
myuser soft nofile 50000

$ grep 'limits' /etc/pam.d/common-session*
/etc/pam.d/common-session:session required        pam_limits.so
/etc/pam.d/common-session-noninteractive:session required        pam_limits.so

$ cat /proc/sys/fs/file-max
101232

পুনরায় বুট করা, লগ ইন এবং:

$ ulimit -n 4097
-bash: ulimit: open files: cannot modify limit: Operation not permitted

সেখানে এখনও একরকম root- ব্যতীত ব্যবহারকারীদের জন্য 4096 সর্বোচ্চ সীমা বলে মনে হয়।


আমি উবুন্টু 16.10 ডেস্কটপে ঠিক একই সমস্যাটি পাচ্ছি । আমি যা চেষ্টা করি না কেন, সীমাগুলি হয় 1024 বা 4096
— নাথানআল্ডেনএসআর

উত্তর:


13

উবুন্টু 14.04 ব্যবহার করে আমি বর্ণিত হার্ড সীমাটি পেয়েছি:

user@notebook:~$ ulimit -Hn 4096  

আমি এটিকে ওলিমিট ব্যবহার করে কমাতে পারতাম, তবে এটি বাড়িয়ে তুলতে পারি না, যেমন প্রশ্ন এটির বর্ণনা করে। যেমন ইউলিমিতের ম্যানুয়াল বর্ণনা করেছে:

শুধুমাত্র রুট শক্ত সীমা বাড়াতে পারে

সুতরাং আমি এর /etc/security/limits.confমতো উচ্চতর সীমা নির্ধারণ করার চেষ্টা করেছি :

user hard nofile 9999 

এবং একটি নতুন লগইন ssh localhost -l userআমাকে নতুন সীমা দিয়েছে:

user@notebook:~$ ulimit -Hn 9999

আশা করি এটিও আপনার পক্ষে কাজ করে।


ধন্যবাদ টমটম টম। আমার ইতিমধ্যে /etc/security/limits.d/custom.conf এ পরিবর্তন রয়েছে। আপনার পরামর্শ অনুসারে আমি এটি সরাসরি /etc/security/limits.conf- এ রাখার চেষ্টা করেছি এবং আমি এখনও "বাশ: উলিমিট: ফাইল খুলুন: সীমা পরিবর্তন করতে পারি না: অপারেশন অনুমোদিত নয়"।
— ক্যাফিন কোমা

আমি - কেবল অনুমান করি - দুটি কারণগুলির মধ্যে একটি, কেন এটি আপনার পক্ষে কার্যকর হয় না:
— টমটম টম

1
অসম্পূর্ণ মন্তব্যটি সম্পাদনা করতে আমাকে অনেক দীর্ঘ সময় নিয়েছে। এখানে আমরা যাচ্ছি: আমি - কেবল অনুমান করি - দুটি কারণগুলির মধ্যে একটি, এটি কেন আপনার পক্ষে কাজ করে না: 1. /etc/security/limits*আপনার লগইন প্রক্রিয়াটি পড়ে না - এখনও অজানা কারণে। ২. আপনার হার্ড সীমা 4096 এ অন্য কোথাও সেট করা হয়েছে এবং "কেবলমাত্র রুট বাড়তে পারে ..."। আপনি আপনার প্রোফাইল যেমন .bashrc(আপনার শেলের উপর নির্ভর করে) চেক করতে পারেন, বা আপনি /etcঅন্যান্য জায়গাগুলি সন্ধান করতে পারেন যেখানে সীমা নির্ধারণ করা যেতে পারে, যেমন find /etc | grep -e ulimit -e 4096 -e nofile। বিটিডাব্লু: আপনি কি এসএসআই চেষ্টা করেছিলেন? এবং: আপনি /etc/ssh/sshd.confকোনও কারণে পিএএম এড়াতে পরিবর্তন করেছেন?
— টমটম টম

হ্যাঁ - সমস্ত লগইন এসএসএসের মাধ্যমে হয়। আমি ইউজপ্যাম অক্ষম করেছি- বেশ কয়েকটি গাইড কেবল এসএস-কী ভিত্তিক লগইনকে অনুমতি দেওয়ার অংশ হিসাবে এটি সুপারিশ করে। আমি এটি অস্থায়ীভাবে চালু করার চেষ্টা করব, কেবল সমস্যাটি কিনা তা দেখার জন্য। ধন্যবাদ!
— ক্যাফিন কোমা

আফাইক, প্যাম হ'ল যা পড়া উচিত /etc/security/limits*- আপনি এটি পরীক্ষা করার জন্য প্যামকে সক্ষম করার চেষ্টা করতে পারেন। আমি পিএএম অক্ষম করার চেষ্টা করব, এটি কী পার্থক্য করে এবং ফলাফলগুলি প্রতিবেদন করবে। --- হ্যাঁ! এটাই! প্যাম অক্ষম করার সাথে সাথে আমার সীমাও 4096 হয়, যদিও পর্যাপ্ত পরিমাণ 9999 এ সেট করা থাকে /etc/security/limits.conf।
— টমটম টম

4

এই নিবন্ধটি , আমি মনে করি আপনার সমস্যার সমাধান করে।

মূলত উপলভ্য সংস্থানগুলি বাড়ানোর জন্য আপনার ulimit কমান্ড ব্যবহার করা উচিত।

উদাহরণ স্বরূপ:

সর্বাধিক সংখ্যক উন্মুক্ত ফাইল বর্ণনাকারী প্রদর্শন করতে নিম্নলিখিত কমান্ড কমান্ডটি ব্যবহার করুন:

cat /proc/sys/fs/file-max

শক্ত এবং নরম মানগুলি দেখতে, কমান্ডটি নিম্নরূপে জারি করুন:

# ulimit -Hn
# ulimit -Sn

Httpd বা ওরাকল ব্যবহারকারীর জন্য কঠোর এবং নরম মানগুলি দেখতে, নিম্নলিখিতভাবে কমান্ডটি জারি করুন:

# su - username

সর্বাধিক ফাইলের সংখ্যা নির্ধারণ করতে, আপনি নিম্নলিখিত হিসাবে কার্নেল ভেরিয়েবল / proc / sys / fs / file-max এ নতুন মান নির্ধারণ করে (মূল হিসাবে লগইন করুন) মুক্ত ফাইলের সর্বাধিক সংখ্যা বাড়াতে পারবেন:

# sysctl -w fs.file-max=100000

উপরের কমান্ডটি 100000 ফাইলের সীমাটিকে বাধ্য করে। আপনাকে /etc/sysctl.confফাইল সম্পাদনা করতে হবে এবং নিম্নলিখিত লাইনটি স্থাপন করা দরকার যাতে পুনরায় বুট করার পরে সেটিংসটি যেমন থাকে তেমন থাকবে। এটি করতে একটি কনফিগার ডিরেক্টরি অনুসরণ করুন:

fs.file-max = 100000

সংরক্ষণ করুন এবং ফাইলটি বন্ধ করুন। পরিবর্তনগুলি কার্যকর হওয়ার জন্য ব্যবহারকারীদের আবার লগ আউট এবং আবার লগ ইন করতে হবে বা নিম্নলিখিত কমান্ডটি টাইপ করতে হবে:

# sysctl -p

কমান্ড সহ আপনার সেটিংস যাচাই করুন:

# cat /proc/sys/fs/file-max

বা:

# sysctl fs.file-max

উপরের পদ্ধতিটি সিস্টেম-প্রশস্ত ফাইল বর্ণনাকারী (এফডি) সীমা নির্ধারণ করে, তবে আপনি httpdসম্পাদনা করে /etc/security/limits.confফাইল সম্পাদনা করে নির্দিষ্ট ( সীমাবদ্ধকরণ ) বা ব্যবহারকারীকে নির্দিষ্ট সীমাতে সীমাবদ্ধ করতে পারেন /etc/security/limits.confএবং সীমাবদ্ধতাগুলি নিম্নরূপে সেট করতে পারেন:

httpd soft nofile 4096
httpd hard nofile 10240

তারপরে এগুলি পরীক্ষা করুন:

# su - httpd
$ ulimit -Hn
$ ulimit -Sn

আপনি যদি অন্য লিনাক্স বিতরণে সমস্যা পেয়ে থাকেন তবে পরীক্ষা করে দেখুন /etc/pam.d/loginএবং সুনিশ্চিত করেছেন যে আপনি pam_limits.soসক্ষম করেছেন, যেমন

session required pam_limits.so

2
হাই ব্রুক দুর্ভাগ্যক্রমে, আমি ইতিমধ্যে নিবন্ধ থেকে পরামর্শ চেষ্টা করেছি। যদিও 'উলিমিট-হ্ন' আমার কাছে নতুন ছিল; এটি 4096 মুদ্রণ করে, আমি যে সীমাটি umpুকিয়ে দিই।
— ক্যাফিন কোমা

0

যদি এটি কোনও পরিষেবা হয় /etc/systemd/system/{ServiceName}.serviceতবে আপনি যোগে সীমাটি সেট করার চেষ্টা করতে পারেনLimitNOFILE=65536


উবুন্টু 14.04 ডিফল্টরূপে systemd ব্যবহার করছে না।
— সংখ্যা 5

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