Tuesday, 15 March 2011

Use sed to change an entry of a configuration file -


मैं /etc/security/limits.conf में निम्न पंक्ति को

  कोर डंप को सक्षम करने के लिए> # * नरम कोर 0  

से

  * नरम कोर असीमित  

  sed -e "s / ^ \ # \ * \ ([] + soft [] + core \ ) [0- 9] [0-9] * $ / \ * \ 1 असीमित / "limit.conf  

मैंने गलत कहां किया?

< P>

यांत्रिकी sed

विभिन्न प्रकार के मुद्दों हैं:

  1. आपको # के सामने बैकस्लैश की आवश्यकता नहीं है, न ही प्रतिलिपि पाठ में * के सामने। वे बहुत नुकसान नहीं करते हैं, लेकिन वे आवश्यक नहीं हैं।
  2. आपको कोर और संख्या के बीच रिक्त स्थान की अनुमति देने की आवश्यकता है।
  3. फ़ाइल में रिक्त स्थान और टैब के लिए अनुमति नहीं देता।
  4. आपने लाइन पर सफेद स्थान को पीछे करने की अनुमति नहीं दी है (जो शायद कोई फर्क नहीं पड़ता)।
  5. आपने स्पष्ट रूप से विस्तारित नहीं किया नियमित अभिव्यक्ति, और आपने पुरानी शैली के \ (... \) का उपयोग करके नोटेशन कैप्चर किया था, लेकिन इसका अर्थ + का कोई विशेष अर्थ नहीं है।
  6. आप -i विकल्प के साथ फ़ाइल को संशोधित नहीं किया (जो कि आपको sed कमांड मिल रहा है ठीक है)।

आप का उपयोग करने में सक्षम होना चाहिए (जीएनयू sed ):

  sed -r -e "s / ^ # \ * ([[: space:] ] + सॉफ्ट [[: अंतरिक्ष:]] + कोर) [[: अंतरिक्ष:]] + [0-9] [0-9] * [[अंतरिक्ष:]] * $ / \ * \ 1 असीमित / "सीमाएं .conf  

<[कोड: [[: अंतरिक्ष:]] नोटेशन सभी प्रकार की सफेद स्थान को पहचानता है (नई लाइनों आदि सहित); आप [[: blank:]] का उपयोग भी कर सकते हैं जो केवल रिक्तता और टैब को पहचानता है यदि आप चाहें।

आप पुराने-शैली वाले नोटेशन का भी उपयोग कर सकते हैं:

< पूर्व [<: अंतरिक्ष]] \ no numeric noise key 1019 कोर \) [[: स्थान:]] 1018 [0-9] * अंतरिक्ष:]] $ > <पी > यदि आप कोर और संख्या के बीच सफेद स्थान को संरक्षित करना चाहते हैं, तो आप निम्न कर सकते हैं:

  sed -e "s / ^ # \ * \ ([: अंतरिक्ष:]] \ {1 \} नरम [[: अंतरिक्ष:]] \ {1 \} कोर [[: अंतरिक्ष:]] \ {1 \} \) [0-9] [0-9] * [[: अंतरिक्ष:]] * $ / * \ 1 अनियमित / "limits.conf  

कैप्चर के करीब ले जाया जाता है, और प्रतिस्थापन स्ट्रिंग में स्थान जोड़ने की कोई आवश्यकता नहीं है ।

सिस्टम फाइल को संशोधित करते समय सतर्क रहें

ध्यान दें कि आपको सावधान रहना चाहिए जब आप सुनिश्चित हों कि आपकी स्क्रिप्ट उत्पादन फ़ाइल को संशोधित करने के लिए तैयार है। मैं आम तौर पर एक नई फ़ाइल बनाता हूं, इसे चेक करें, फिर पुरानी फाइल की तारीख / समय-मुहर लगी फाइल नाम की प्रतिलिपि बनाएँ और नई फ़ाइल को मूल पर कॉपी करें। वैकल्पिक रूप से, -i के साथ एक प्रत्यय का उपयोग करें, संभवतः तिथि / समय के साथ।

  sed -i। $ (Date + '% Y% m% d।% H% M% S ') -e s / ^ # \ * \ ([[: space:]] \ {1, \} नरम [[: स्पेस:]] \ {1, \} कोर [[: स्पेस] :]] \ {1, \} \) [0- 9] [0-9] * [[: अंतरिक्ष:]] * $ / * \ 1 अनियमित / "limits.conf  

उस स्वरूप का लाभ (जो आईएसओ 8601: 2004 पर आधारित है) यह है कि किसी भी विशेष सॉर्टिंग विकल्पों के बिना क्रमिक फाइलें क्रमबद्ध करें यदि आप चाहें तो दिनांक / समय प्रारूप में विराम चिह्न जोड़ सकते हैं।

किसी भी तरह से, अगर नई फ़ाइल समस्या देता है, तो आपको मूल (जो की एक प्रति) मूल है जिसे आप वापस डाल सकते हैं प्रणाली को आसानी से जल्दी से चल रहा है जितना जल्दी संभव है।


No comments:

Post a Comment