চলমান প্রক্রিয়াতে সর্বাধিক ফাইল সীমা সেট করুন


27

আমার একটি দীর্ঘ চলমান প্রক্রিয়া রয়েছে যা শেষ পর্যন্ত সর্বাধিক উন্মুক্ত ফাইলের সীমাতে চলেছে। আমি জানি যে এটির ব্যর্থ হওয়ার পরে কীভাবে এটি পরিবর্তন করা যায় তবে কমান্ড লাইন থেকে চলমান প্রক্রিয়াটির জন্য কী এটি পরিবর্তন করার কোনও উপায় আছে?

উত্তর:


28

সেন্টোস / আরএইচইএল-তে নতুন কার্নেলগুলিতে (২.6.৩২+) আপনি এটি রিকটাইমে / proc / <pid> / সীমা দ্বারা পরিবর্তন করতে পারেন:

cd /proc/7671/
[root@host 7671]# cat limits  | grep nice
Max nice priority         0                    0                    
[root@host 7671]# echo -n "Max nice priority=5:6" > limits
[root@host 7671]# cat limits  | grep nice
Max nice priority         5                    6                    

সেই নিয়ম! কোনও সীমাবদ্ধতা ফাইলটিতে লিখতে পারেন এমন ধারণা ছিল না।
ক্লি

4
উবুন্টু 12.04
পোমা

5
এটি আমার 3.2 কার্নেলের উপর কাজ করে না । আমি আপনার বন্টন এই জন্য একটি নির্দিষ্ট বেসরকারী প্যাচ হয়েছে কারণ আমি কোন অস্তিত্ব দেখতে পান এই প্যাচ কার্নেলের মধ্যে FS জন্য / proc / base.c
টোটার

হতে পারে ... আমি জানি এটি RHEL / CentOS কার্নেলের মধ্যে উপস্থিত রয়েছে s এটি দেবিয়ান কার্নেলগুলিতে উপস্থিত বলে মনে হচ্ছে না।
সিগ-আইও

2
'সেটপ্রিমিট' হ'ল ভবিষ্যত-প্রমাণ এবং প্রস্তাবিত উপায়, পরবর্তী উত্তরটি দেখুন
সিগ-আইও

26

এখানে ডকুমেন্টেড হিসাবে , prlimitইউজার-লিনাক্স 2.21 এর সাথে প্রবর্তিত কমান্ডটি আপনাকে চলমান প্রক্রিয়াগুলির সীমাটি পড়তে ও পরিবর্তন করতে দেয়।

এটি লিখনযোগ্যের অনুসরণ /proc/<pid>/limits, যা মূললাইন কার্নেলের সাথে সংহত ছিল না। এই সমাধান কাজ করা উচিত।

যদি আপনার prlimit(1)এখনও না থাকে তবে আপনি prlimit(2)ম্যানপেজে একটি সংক্ষিপ্ত সংস্করণে কোডটি সন্ধান করতে পারেন ।


2
ম্যানপেজে সর্বনিম্ন সংস্করণের জন্য +1!
টোটার

সতর্কতা: একটি সীমাবদ্ধতার পরে আপনি যদি এটির প্রক্রিয়াটিতে "নোলিমিট" পরিবর্তন করেন তবে "মেমক্যাচড" সেগফল্ট হবে। লিখনযোগ্য সীমাটি ব্যবহার করা সবসময় ভাল ধারণা নয়
জন


2

আপনি man ulimit-n বিকল্পের সাহায্যে উলিমিট চেষ্টা করতে পারেন তবে ম্যাগ পৃষ্ঠাটি বেশিরভাগ ওএস এর সেট করতে দেয় না।

আপনি ব্যবহার করে একটি সিস্টেমের প্রশস্ত ফাইলের বিবরণ সীমা সেট করতে পারেন sysctl -w fs.file-max=Nএবং পোস্ট বুট-আপকে বহাল রাখেন make/etc/sysctl.conf

তবে আমি প্রক্রিয়াটি দেখার জন্যও এটি পরামর্শ করব যে এটি নির্দিষ্ট সময়ে এত বেশি ফাইল খোলার দরকার আছে কিনা এবং যদি আপনি বাস্তবে কিছু ফাইল বন্ধ করে দিতে পারেন এবং প্রক্রিয়াটিতে আরও দক্ষ হতে পারেন।


খোলা ফাইল জিনিসটি একটি বাগ, তবে আমি এটি বের করতে সক্ষম হইনি। যখন আমি এটি করতে পছন্দ করি তবে উত্পাদন মাঝেমধ্যে মিড-ডে ক্রাশ করে।
kāgii

ulimitচলমান প্রক্রিয়াগুলিতে সেটিংস প্রয়োগ করে না ।
অবশেষে

0

প্রোগ্রাম করার জন্য যদি প্রোগ্রামটি করা হয় তবে প্রক্রিয়াটি তার নিজস্ব নরম সীমা পরিবর্তন করতে পারে (বা যদি আপনি এটি হ্যাক করতে সক্ষম হন), তবে এটির CAP_SYS_RESOURCE ক্ষমতা না থাকলে এটি তার কঠোর সীমা বাড়াতে পারে না। আপনি রানটাইমের সময় সীমাটি পরিদর্শন করতে পারেন /proc/$pid/limits

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