मैं किसी अन्य उपयोगकर्ता के लिए ulimit की जांच कैसे करूं और खुली फाइलों को बदलूं?


18

मेरे पास गियरमैन उपयोगकर्ता के रूप में चलने वाली एक प्रक्रिया है और मैं open filesइस खराब त्रुटि से बचने के लिए बदलना चाहता हूं :

ERROR 2014-09-12 17: 49: 14.000000 [मुख्य] ​​स्वीकार करें (बहुत सारी खुली फाइलें) -> libgearman-server / gearmand.cc: 788

मैं उबंटू पर एक अन्य उपयोगकर्ता के रूप में अल्मीट कैसे चला सकता हूं और खुली फाइलों को बदल सकता हूं? मैं वर्तमान में गियरमैन के रूप में लॉगिन नहीं करता हूं, लेकिन मेरे पास रूट एक्सेस है। मैंने ऐसा करने की कोशिश की:

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

जैसा कि यहाँ सुझाया गया है लेकिन कुछ भी नहीं मिलता है:

$ su gearman --shell /bin/bash --command "ulimit -n"
Password: 
$

जवाबों:


25

इसे सिर्फ इसलिए फिर से देखना क्योंकि मैंने एक Google खोज के दौरान इस पर ठोकर खाई थी और टोनी की टिप्पणी को उपयोगी पाया था : जबकि यह सच है कि सीमा को प्रक्रिया के स्तर पर रखा जाता है, जिस तरह से आप किसी विशेष उपयोगकर्ता के लिए सीमा निर्धारित करेंगे। वे प्रक्रियाएँ खोजें जो उन्होंने शुरू की हैं और फिर जाँचें proc/${id}/limits

विशेष रूप से:

$ ps -u username  # look up processes owned by user
$ sudo grep 'open files' /proc/${id}/limits  # find "Max open files" line for process ID

2
यह स्वीकृत उत्तर होना चाहिए, इसका उपयोग डेबियन पर रेडिस उपयोगकर्ता के लिए वर्तमान दोष का पता लगाने के लिए किया।
थोलू

6

जब आप ulimitकमांड चलाते हैं तो यह केवल चलने वाली प्रक्रिया ulimit(शेल) और सभी उपप्रोसेस को प्रभावित करता है । इसलिए जब आप चलाते हैं bash --command "ulimit -n", तो यह केवल बैश के उस उदाहरण के लिए खुली फ़ाइलों की संख्या को प्रभावित करता है, फिर बैश से बाहर निकलता है, इस प्रकार भविष्य की प्रक्रियाएं प्रभावित नहीं होती हैं।

तो आप जो चाहते हैं उसे पूरा करने के लिए (अपनी वास्तविक प्रक्रिया के लिए खुली फ़ाइल सीमा बढ़ाने के लिए), यह संभवतः limits.confआपके विशिष्ट गियरमैन उपयोगकर्ता के लिए खुली फ़ाइल सीमा को बढ़ावा देने के लिए संपादित करने के लिए अधिक समझ में आता है ।

सीमा के उदाहरण देखें । अन्यत्र या यहाँ


यह भी है कि मुझे क्या मिला, लेकिन मुझे यह जांचने में सक्षम होना अच्छा लगेगा कि क्या यह "प्रभावी" हुआ। मुझे वह समस्या नहीं है जो मुझे अब हो रही थी इसलिए मुझे यकीन है कि यह किया गया था
टोनी

10
यह है कि आप कैसे जांच करते हैं more /proc/<proc_id>/limits ... शायद जवाब में जोड़ने के लायक है
टोनी

5
/etc/security/limits.conf
सीमा

1

प्रयोग करके देखें su - <USERNAME> -c ulimit' -Hn'। मैंने अभी इसे CEntOS 7 पर परीक्षण किया है, और यह काम करता है।


1
यदि <USERNAME>लॉगिन करने में असमर्थ है (nologin शेल है) तो यह काम नहीं करेगा ।
dr01
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.