অ-রুট ব্যবহারকারীদের জন্য আমি কীভাবে খোলা ফাইলগুলির সীমা বাড়াতে পারি?


143

এটি উবুন্টু রিলিজ 12.04 (সুনির্দিষ্ট) 64-বিট কার্নেল লিনাক্স 3.2.0-25-ভার্চুয়াল এ ঘটছে

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

আমি এখনও অবধি যে পোস্টগুলি পেয়েছি সে অনুসারে আমার লাইনগুলি প্রবেশ করতে সক্ষম হওয়া উচিত

/etc/security/limits.conf এর মত:

soft nofile 4096
hard nofile 4096

সকল ব্যবহারকারীর জন্য অনুমোদিত ফাইলগুলির সংখ্যা বাড়াতে।

তবে এটি আমার পক্ষে কাজ করছে না এবং আমি মনে করি সমস্যাটি সেই ফাইলটির সাথে সম্পর্কিত নয়।

সমস্ত ব্যবহারকারীর জন্য, ডিফল্ট সীমা 1024, /etc/security/limits.conf এ যাই থাকুক না কেন (সেই ফাইলটি পরিবর্তন করার পরে আমি রিবুট করেছি)

$ ulimit -n
1024

এখন, /etc/security/limits.conf এন্ট্রি থাকা সত্ত্বেও আমি এটিকে বাড়াতে পারি না:

$ ulimit -n 2048

-বাশ: উলিমিট: ফাইল খুলুন: সীমা পরিবর্তন করতে পারে না: অপারেশন অনুমোদিত নয় অদ্ভুত অংশটি হ'ল আমি সীমাটি নীচের দিকে পরিবর্তন করতে পারি তবে এটি উপরের দিকে পরিবর্তন করতে পারি না - এমনকী মূল সীমা থেকে নীচে থাকা কোনও সংখ্যায় ফিরে যেতে:

$ ulimit -n 800
$ ulimit -n
800

$ ulimit -n 900

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

রুট হিসাবে, আমি এই সীমাটি আমার যা চাই, উপরে বা নীচে পরিবর্তন করতে পারি। এমনকি এটি সম্ভবত / প্রস / সিএস / এফএস / ফাইল-সর্বাধিক সিস্টেম-বিস্তৃত সীমা সম্পর্কে যত্নশীল বলে মনে হচ্ছে না

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

# ulimit -n 188898
# ulimit -n 
188898

এমনকি আমি মূল হিসাবে চলার জন্য গ্রহণও পেয়েছি, "অ্যাপ্লিকেশন ওপেন ওপেন ফাইল" ব্যতিক্রমের কারণে আমার অ্যাপ্লিকেশনটি ক্র্যাশ হয়ে গেছে!

এখনও অবধি, আমি কোনও অ-রুট ব্যবহারকারীর জন্য উন্মুক্ত ফাইল সীমা বাড়ানোর কোনও উপায় খুঁজে পাইনি।

আমার কীভাবে এটি সঠিকভাবে করা উচিত? আমি আরও বেশ কয়েকটি পোস্ট দেখেছি তবে ভাগ্য নেই!


6
এছাড়াও, নোট করুন যে আপনি সম্পাদনা করার পরে /etc/security/limits.conf, আপনাকে নতুন সীমা সীমা ব্যবহার করার আগে আপনাকে লগআউট করতে হবে এবং তারপরে আবার ফিরে আসতে হবে। আমি এটি করেছি, এবং ulimit -Hsযখন আমি সবেমাত্র এটি 1000000 এ উন্নীত করেছি তখনও 1000 দেখিয়ে হতবাক হয়ে গেলাম! তারপরে আমি লগ আউট করে ফিরে এসেছি এবং উলামিট নতুন পরিমাণটি দেখিয়েছে।
সেরিন 21

জিইউআই সেশনের জন্য আপনি এই থ্রেডটিও গুরুত্বপূর্ণ (উবুন্টু 16+) পেতে পারেন ।
ওয়াল্ডেমার ওসিসিস্কি 8:57

উত্তর:


142

ulimitডিফল্টরূপে কমান্ড কঠিন সীমা, যা আপনি (ক ব্যবহারকারী) কমে যাবে পরিবর্তন ঘটায়, কিন্তু বাড়াতে পারবে না।

সফট সীমাটি পরিবর্তন করতে -S বিকল্পটি ব্যবহার করুন , যা 0- { হার্ড AR থেকে শুরু করে }

আমি আসলে ওরফে আছে ulimitকরার ulimit -S, তাই এটি নরম সীমা অক্ষমতা সব সময়।

alias ulimit='ulimit -S'

আপনার সমস্যা হিসাবে, আপনি আপনার এন্ট্রিগুলিতে একটি কলাম মিস করছেন /etc/security/limits.conf

এখানে চারটি কলাম থাকতে হবে তবে প্রথমটি আপনার উদাহরণে অনুপস্থিত।

* soft nofile 4096
* hard nofile 4096

প্রথম কলামে ডাব্লুএইচওর জন্য সীমাবদ্ধতার জন্য আবেদন করা উচিত describes '*' একটি ওয়াইল্ডকার্ড, যার অর্থ সমস্ত ব্যবহারকারী। রুটের সীমা বাড়ানোর জন্য আপনাকে স্পষ্টভাবে '*' এর পরিবর্তে 'রুট' লিখতে হবে।

আপনাকে /etc/pam.d/common-session*নিম্নলিখিত লাইনটি সম্পাদন করতে হবে এবং শেষ করতে হবে:

session required pam_limits.so

1
সর্বাধিক সংখ্যক উন্মুক্ত ফাইল বর্ণনাকারীর জন্য আমি হার্ড সীমাটি কীভাবে পরিবর্তন করব? আমার সমস্যাটি হ'ল আমার একি্লিপ্স অ্যাপ্লিকেশনটিতে যত খুশি ফাইলের অনুমতি দেওয়া দরকার তবে 4096 এর সীমা যথেষ্ট নয় এবং আমি এটিকে যতটা সম্ভব 500000 হিসাবে সেট করতে চাই limits সীমাবদ্ধতাতে আমার সেটিংটি যেমনটি আপনি তারার সাথে উল্লেখ করেছেন এবং এখনও হার্ড সীমাটি চলছে না।
আইকোড

1
ঠিক আছে, আপনি / proc / sys / fs / file-max এর মানটি পেয়েছিলেন 188,897 ... সুতরাং আমি বলতে পারি যে আপনার উচ্চতর সীমা 188,000 (অনুমোদিত) এবং 500,000 (অনুমোদিত নয়) এর মধ্যে রয়েছে। মনে মনে জাগ্রত করে যে আপনার কাছে এমন কিছু রয়েছে যা একই সাথে 65000 এরও বেশি ওপেন ফাইলের প্রয়োজন। কি দারুন. সাধারণত এটি বড়-লোহা দ্বারা পরিচালিত হয়। আমি একটি প্রোগ্রামিং সম্পর্কে সন্দেহ হব, আহ, ভুল ধারণা। (সমস্ত যথাযথ শ্রদ্ধার সাথে, দয়া করে)
লার্নিক্স

4
এটাই ছিল: সেশনটির দরকার পাম_মিলিটস.স, ধন্যবাদ!
মারাত্মক

13
প্রথমে আমি ওয়াইল্ডকার্ডটি শেষের দিকে মিস করেছি /etc/pam.d/common-session*এবং সবেমাত্র সম্পাদনা করেছি common-sessionএবং রিবুট করার পরেও এটি কার্যকর হয়নি। কিন্তু (জন্য একই লাইনে যোগ করার পরে pam_limits.so) এর common-session-noninteractive, ulimit -nনতুন লগ-ইন (কোন রিবুট প্রয়োজন) পর নতুন মান প্রদর্শিত। FWIW আমি রুটের সীমাটি পরিবর্তন করার চেষ্টা করছিলাম (কেবল)।
ল্যাম্বার্ট

1
মূল হিসাবে লগ ইন করা হলে মানটি আলাদা কিনা তাও পরীক্ষা করে দেখুন। superuser.com/questions/1200539/…
রব্বো_উইকে

20

আপনি যদি প্রতি ব্যবহারকারীর ভিত্তিতে নরম এবং শক্ত সীমা ব্যবহার করেন তবে আপনি এমন কিছু ব্যবহার করতে পারেন:

su USER --shell /bin/bash --command "ulimit -n"

আপনার সেটিংস সেই নির্দিষ্ট ব্যবহারকারীর জন্য কাজ করছে কিনা তা পরীক্ষা করতে।


5

এটি কাজ করতে পেয়ে আমার প্রচুর সমস্যা হয়।

নিম্নলিখিত ব্যবহার করে আপনাকে ব্যবহারকারীর অনুমতি নির্বিশেষে এটি আপডেট করার অনুমতি দেয়।

sudo sysctl -w fs.inotify.max_user_watches=100000

4
আমি চেষ্টা করেছি যেহেতু আমার একই সমস্যা হচ্ছে তবে এটি কার্যকর হয়নি$ sudo sysctl -w fs.inotify.max_user_watches=100000 fs.inotify.max_user_watches = 100000 $ ulimit -n 1024
গ্রেপমাস্টার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.