লিনাক্স যে ফাইলগুলি খুলতে পারে তার সংখ্যার উপর আমি কীভাবে একটি সীমা নির্ধারণ করব?


11

আমি একটি জাভা অ্যাপ্লিকেশন ব্যবহার করে চালানোর পরিকল্পনা করছি nohup ... &। সীমাটি অবশ্যই এই জাতীয় আদেশের ক্ষেত্রে প্রযোজ্য।


তবে এটি আমার জাভা প্রোগ্রামে একটি ত্রুটি ঘটায়

উত্তর:


7

বেশিরভাগ সিস্টেমে পিএএম ব্যবহার করে এবং pam_limitsমডিউল সেট সীমাবদ্ধতার ভিত্তিতে থাকে /etc/security/limits.conf। খোলা ফাইলগুলির জন্য প্রতি ব্যবহারকারী সীমা বলা হয় nofile। আপনি এটিকে প্রতিটি ব্যবহারকারীর জন্য বা কোনও নির্দিষ্ট ব্যবহারকারী বা গোষ্ঠীর জন্য সেট করতে পারেন এবং আপনি এমন একটি সীমা নির্ধারণ করতে পারেন যা ব্যবহারকারীর ওভাররাইড করতে পারে (নরম সীমা) এবং অন্যটি কেবলমাত্র রুটকে ওভাররাইড করতে পারে (হার্ড সীমা)। ডকুমেন্টেশন এবং limits.confman পৃষ্ঠা বিবরণ আছে। উদাহরণস্বরূপ, সবার জন্য সীমা 50000 বাড়ানোর জন্য এই লাইনটি প্রবেশ করুন /etc/limits.conf(আপনি যখন লগ ইন করবেন তখন সেটিংস কার্যকর হয়):

* - nofile 50000

মধ্যে limits.confনা * hard nofile 50000এবং / অথবা * soft nofile 50000। আমি শক্ত এবং নরম মধ্যে প্রযুক্তিগত পার্থক্য জানি না এবং সবসময় উভয়ই করেছি।
রন

SLES 11.4-র মধ্যে উদাহরণস্বরূপ tcsh ব্যবহার করে limit descriptors 50000একটি প্রদত্ত টার্মিনাল উইন্ডো / সেশনের মধ্যে মান পরিবর্তন করতে পারে।
রন

দ্বিতীয় কলামে @ron -` নরম এবং শক্ত সীমা উভয়ই সেট করে। আপনি যদি পৃথক মান চান তবে এগুলি আলাদা করে সেট করতে হবে। ulimitকমান্ডটি চালিয়ে যে কোনও সময় নরম সীমা পরিবর্তন করা যেতে পারে ( limitcsh এ ডাকা হয়)। একটি অনিবদ্ধ ব্যবহারকারী কখনও কঠোর সীমা চেয়ে বেশি যেতে পারে না।
গিলস 3:32

যদি আমি কেবল শক্ত সেট করি তবে কি নরম মানটি ডিফল্ট থাকে? আমি যদি কেবলমাত্র নরম সেট করে রাখি এবং শক্ত না করে, হার্ডটি কি ডিফল্ট মান বা অন্তর্নিহিতভাবে নরম মানের সমান থাকে? আমি কি নরম> শক্ত সেট করতে পারি? নরম কি বাস্তব মূল্য কার্যকর হয়? প্রশ্নের জন্য দুঃখিত।
রন

@ron নরম সীমাটি স্বয়ংক্রিয়ভাবে হার্ড সীমাতে আবদ্ধ হয়। আপনি যদি কেবলমাত্র হার্ড সীমাটি সেট করেন, তবে এটি স্নিগ্ধ সীমাটি সর্বাধিক (ডিফল্ট_সোফট_লিমিট, আসল_হোল্ড_লিমিট) এ সেট করে।
গিলস 'অশুভ হওয়া বন্ধ করুন'

4

আপনি যোগ করতে পারেন fs.file-max = <your number>মধ্যে /etc/sysctl.conf। তারপরে পুনরায় বুট করুন।


বিড়াল / proc / sys / fs / ফাইল-সর্বোচ্চ 169203 , তবে ulimit -n 1024

পুনরায় বুট করার দরকার নেই। শুধু চালান sysctl fs.file-max=123456। ( /etc/sysctl.confবুট সময়ে স্ক্রিপ্ট দ্বারা পঠন করা sysctlহয় যা বিষয়বস্তুগুলিতে কল করে))
গিলস 'দুষ্ট হওয়া বন্ধ করুন' 21

3
ulimit -n

প্রক্রিয়া প্রতি সেটিংস এবং পরিবর্তন করতে পারেন

/proc/sys/fs/file-max

অথবা fs.file-maxসিস্টেমেড ভ্যারিয়েবল নামে পরিচিত সিস্টেম ব্যাপী মানটি পড়তে এবং সেট করতে ব্যবহৃত হতে পারে


বিড়াল / proc / sys / fs / ফাইল-সর্বোচ্চ 169203 , তবে ulimit -n 1024

1

আপনি এর জন্য ওলিমিট ব্যবহার করতে পারেন:

http://bloggerdigest.blogspot.com/2006/10/purpose-of-ulimit-linux-command.html

যদিও আপনার নিশ্চিত হওয়া উচিত যে এ জাতীয় সমন্বয় অবলম্বন করার আগে এতগুলি ফাইল হ্যান্ডলগুলি খোলানো একেবারে প্রয়োজনীয়। আপনি কেবলমাত্র একটি লুপে ইনপুটস্ট্রিম.ক্লস () করতে ভুলে গিয়েছেন বলে সর্বাধিক ফাইল হ্যান্ডলগুলি বাড়ানো কেবল অন্তর্নিহিত সমস্যাটি বিলম্ব করতে চলেছে।


1
আমি প্রচুর ক্লায়েন্টের সাথে সংযোগ স্থাপন করতে চাই

1

প্রোগ্রাম প্রোগ্রামে উলিমিট (ব্যাশ কমান্ড - ম্যান বাশ বা আপনার শেলের জন্য অনুরূপ সন্ধান করুন) ব্যবহার করুন। আপনি কী করছেন তা যদি আপনি না জানেন তবে - সম্ভাব্য ডস global


SLES 11.4 আমি সেট করেছেন nofileমধ্যে limits.conf100000 সফলভাবে যাবে। আমি প্রমাণ করতে পারি যে খুব বড় একটি মান নির্ধারণের ফলে এসএসএইচ-এর সাথে পরবর্তী লগ ইন রোধ করা হয়েছিল এবং সিস্টেমটি পুনরুদ্ধার করতে আমাকে ডিভিডি থেকে বুট করতে হয়েছিল value
রন

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