কেন এটি নন-রুট ব্যবহারকারীর জন্য 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.