लिनक्स कमांड और शेल कौशल
ग्रेप: एक पेशेवर की तरह लिनक्स की खोज करना
ग्रेप हर टूलचेन रिफ्रेश से बचता है क्योंकि काम कभी नहीं बदलता है: टेक्स्ट के अंदर उन पंक्तियों को खोजें जो किसी भी व्यक्ति द्वारा इसे साफ करने की तुलना में तेजी से बढ़ती हैं। इसकी वास्तविक शक्ति ध्वज शब्दावली है जो खोज को उत्तर में बदल देती है: आसपास के संदर्भ, फ़ाइल नाम सूचियां, उल्टे मिलान, और निकास कोड जिस पर शेल स्क्रिप्ट शाखा कर सकती है। जब कोई सर्वर गलत व्यवहार करता है, तो जांच ग्रेप से शुरू होती है, और अक्सर किसी के स्वीकार करने की तुलना में यह यहीं समाप्त भी हो जाती है।
मुख्य बिंदु
- उद्देश्य के साथ पुनरावर्ती रूप से खोजें: grep -rni 'fail2ban' /var/log --include='*.log' बायनेरिज़ और संपीड़ित अभिलेखागार को अपने आप छोड़ देता है; /var/log पर एक खाली grep -r उस पाठ को धीमी गति से सिखाता है।
- संदर्भ मिलान को पढ़ने योग्य बनाता है: -ए 3 बाद की पंक्तियाँ दिखाता है, -बी 3 पहले, -सी 5 दोनों; -l केवल फ़ाइल नाम सूचीबद्ध करता है, -c प्रति फ़ाइल मिलानों की गणना करता है, और -L सूची को गायब चीज़ों में बदल देता है।
- निकास कोड अनुबंध का हिस्सा हैं: 0 का अर्थ है मिलान, 1 का अर्थ है कोई मिलान नहीं, 2 का अर्थ है त्रुटि; एक स्क्रिप्ट जो grep -q चलाती है और इस भेद को अनदेखा करती है कि सफलता और चुप्पी को समान रूप से माना जाता है।
- श्रृंखला फ़ाइल सूचियाँ शून्य-सुरक्षित रूप से: grep -rlZ 'ssl_protocols' /etc/nginx --include='*.conf' | xargs -0 -r ls -l; Z और -0 युग्मन को हटा दें और रिक्त स्थान वाला पहला फ़ाइल नाम पाइपलाइन को तोड़ देता है।
- पठनीय विकल्प के लिए डिफ़ॉल्ट रेगेक्स स्तर के रूप में -E का उपयोग करें, और -P (लुकराउंड्स, \d कक्षाएं) तक तभी पहुंचें जब आप स्वीकार करते हैं कि यह एक GNU एक्सटेंशन है जिसे BSD grep नहीं ले जाएगा।
- -F पैटर्न को शाब्दिक पाठ के रूप में मानता है: टिकट से सीधे चिपकाए गए वेरिएबल्स से घुसपैठ करने वाले रेगेक्स मेटाकैरेक्टर्स के लिए तेज़ और प्रतिरक्षा।
- --exclude-dir=.git और --exclude-dir=node_modules पुनरावर्ती खोजों को उन निर्देशिकाओं से बाहर रखते हैं जो केवल उन्हें धीमा करने के लिए मौजूद हैं; स्क्रिप्ट में नामों को स्पष्ट रूप से लिखें क्योंकि ब्रेस विस्तार एक बैश सुविधा है, ग्रेप सुविधा नहीं।
- आदतों को अलग रखें: इंटरैक्टिव आराम के लिए --color=auto, स्क्रिप्ट में कोई रंग नहीं (एस्केप सीक्वेंस भ्रष्ट लॉग), और -n (लाइन नंबर) चालू रखें ताकि अगला व्यक्ति आपके द्वारा चिपकाए गए स्थान को ढूंढ सके।
क्षेत्रीय टिप्पणी
मैंने एक बार रात 2 बजे एक ग्राहक के पूरे लॉग फ़ार्म पर एक नंगे grep -r चलाया और अपनी परेशानी के लिए चालीस मिनट का मौन रखा; --include='*.log' और -l जोड़ने से टिकट वहीं समाप्त हो गया। शामिल और निकास-कोड की आदतें अब पैटर्न के आने से पहले ही लागू हो जाती हैं।
अक्सर पूछे जाने वाले प्रश्न
ग्रेप कभी-कभी मेरी लाइन के बजाय 'बाइनरी फ़ाइल मैच' क्यों प्रिंट करता है?
मैच के पास एक NUL बाइट GNU grep फ़ाइल को बाइनरी के रूप में मानता है; टेक्स्ट मोड को बाध्य करने के लिए -a जोड़ें या बायनेरिज़ को पूरी तरह से छोड़ने के लिए -I जोड़ें, जो मिश्रित लॉग निर्देशिकाओं पर सही डिफ़ॉल्ट है।
क्या मुझे इसके बजाय रिपग्रेप का उपयोग करना चाहिए?
रिपग्रेप तेज़ है और डिफ़ॉल्ट रूप से बाइनरी और छिपी हुई फ़ाइलों को छोड़ देता है, लेकिन बचाव छवियों सहित हर उस बॉक्स पर grep मौजूद होता है जिसमें आप SSH करेंगे। पहले ग्रेप सीखें; आरजी तक पहुंचें जहां इसे स्थापित किया जाना है।
मैं घुमाए गए, संपीड़ित लॉग कैसे खोजूं?
zgrep .gz फ़ाइलों को पारदर्शी रूप से खोजता है और zstdgrep स्विच किए गए नए कंप्रेसर रोटेशन को कवर करता है; कल की सुई आमतौर पर उनमें से एक के अंदर रहती है, इसलिए उपकरण को बुनियादी स्वच्छता के रूप में गिना जाता है।
मैं किसी शब्द का मिलान कैसे करूं, लेकिन उससे जुड़े लंबे शब्द का नहीं?
संपूर्ण-शब्द मिलान के लिए -w और पूर्ण-पंक्ति मिलान के लिए -x का उपयोग करें; जब पैटर्न को शब्दों के हिस्सों की आवश्यकता होती है, तो [Ss]erver जैसे वर्ण वर्ग हर जगह मामले को समतल किए बिना सटीक नियंत्रण देते हैं।
लिनक्स कमांड और शेल कौशल में Kinetikatech कैसे सहायता करता है
हम इसे सैकड़ों बार संभाल चुके हैं: कमांड और स्क्रिप्टिंग आदतें जो यह तय करती हैं कि कोई व्यवस्थापक सर्वर चलाता है या उससे लड़ता है: प्रत्येक बेस इंस्टॉल में मौजूद टूल के साथ टेक्स्ट और प्रक्रियाओं को खोजना, बदलना, स्थानांतरित करना और पर्यवेक्षण करना। Linux सर्वर सुरक्षा और सर्वर प्रबंधन के साथ आपको पूरा चक्र मिलता है — हम आकलन करते हैं, लागू करते हैं, चौबीसों घंटे निगरानी रखते हैं, और महत्वपूर्ण समय में 30 मिनट में जवाब देते हैं।