जवाबों:
CentOS / RHEL पर नए कर्नेल (2.6.32+) पर आप इसे रनटाइम पर / 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
जैसा कि यहाँ प्रलेखित है , prlimit
कमांड-यूज़-लाइनक्स २.२१ के साथ पेश किया गया है जो आपको चल रही प्रक्रियाओं की सीमाओं को पढ़ने और बदलने की अनुमति देता है।
यह लिखने योग्य के लिए एक अनुवर्ती है /proc/<pid>/limits
, जिसे मेनलाइन कर्नेल में एकीकृत नहीं किया गया था। यह समाधान काम करना चाहिए।
यदि आपके पास prlimit(1)
अभी तक नहीं है , तो आप prlimit(2)
मैनपेज में एक न्यूनतर संस्करण के लिए कोड पा सकते हैं ।
उपयोग-लिनेक्स-एनजी के नए संस्करण पर आप प्रारंभिक आदेश का उपयोग कर सकते हैं, अधिक जानकारी के लिए इस लिंक को पढ़ें /superuser/404239/setting-ulimit-on-a-running-process
आप man ulimit
-n विकल्प के साथ अलिमित करने का प्रयास कर सकते हैं, हालांकि मैग पेज अधिकांश ओएस को सेट करने की अनुमति नहीं देता है।
आप सिस्टम वाइड फाइल डिस्क्रिप्शन की सीमा का उपयोग कर सेट कर सकते sysctl -w fs.file-max=N
हैं और बदलाव को जारी रख सकते हैं/etc/sysctl.conf
हालाँकि, मैं यह देखने के लिए प्रक्रिया को देखने का सुझाव दूंगा कि क्या वास्तव में किसी निश्चित समय में इतनी सारी फाइलें होनी चाहिए, और यदि आप वास्तव में कुछ फाइलों को बंद कर सकते हैं और इस प्रक्रिया में अधिक कुशल हो सकते हैं।
ulimit
रनिंग प्रक्रियाओं के लिए सेटिंग लागू नहीं करता है ।
यदि ऐसा करने के लिए प्रोग्राम किया जाता है (या यदि आप इसे हैक करने का प्रबंधन करते हैं) तो प्रक्रिया अपनी स्वयं की नरम सीमा बदल सकती है, लेकिन जब तक कि CAP_SYS_RESOURCE क्षमता नहीं है, तब तक यह अपनी हार्ड सीमा नहीं बढ़ा सकता है। आप रनटाइम में सीमाओं का निरीक्षण कर सकते हैं /proc/$pid/limits
।