Ubuntu bzless गाइड: बिना अनपैक किए bz2 फाइल पढ़ें

अवलोकन

लिनक्स सर्वर पर कार्य करते समय जब हमें विशालकाय .bz2 लॉग्स की पड़ताल करनी होती है, तो उन्हें बार-बार डीकंप्रेस करने से न केवल डिस्क स्टोरेज भर जाता है बल्कि काफी वक्त भी नष्ट होता है। ऐसे परिदृश्यों में bzless यूटिलिटी सिस्टम एडमिनिस्ट्रेटर के लिए बेहद उपयोगी सिद्ध होती है, क्योंकि यह बिना आर्काइव खोले ही फाइलों के आंतरिक डेटा को पेज-दर-पेज नेविगेट करने की सुविधा प्रदान करती है। इस ट्यूटोरियल में हम bzless की आधारभूत कार्यप्रणाली, इन-बिल्ट सर्च ट्रिक्स और उत्पादन परिवेश में लॉग एनालिसिस के व्यावहारिक तरीकों को स्टेप-बाय-स्टेप समझेंगे।

1. bzip2 टूल की उपलब्धता और टेस्ट आर्काइव का निर्माण

सिस्टम में bzless कमांड के सुचारू संचालन हेतु संबंधित बाइनरी की पुष्टि करना आवश्यक है; यदि यह टूल वातावरण में मौजूद न हो, तो bzip2 पैकेज को तुरंत इंस्टॉल किया जा सकता है।

bzless की उपस्थिति जांचना और bzip2 पैकेज इंस्टॉल करना

व्यावहारिक परीक्षण हेतु कुछ डमी डेटा तैयार करते हैं। नीचे दी गई echo कमांड चलाकर विभिन्न इवेंट लेवल्स वाले मल्टी-लाइन मैसेज युक्त app_server.log फाइल तैयार की जाती है।

app_server.log में सैंपल सर्वर लॉग्स दर्ज करना

मूल लॉग फाइल को डिस्क पर सुरक्षित रखते हुए कम्प्रेशन प्रक्रिया को आगे बढ़ाने के लिए -k फ्लैग के साथ bzip2 -k app_server.log निष्पादित करें, जिससे एक नई app_server.log.bz2 फाइल जनरेट होगी।

मूल फाइल को बनाए रखते हुए bzip2 द्वारा कंप्रेस करना

कंप्रेस हुई फाइल के सफलतापूर्वक बनने की पुष्टि करने और उसके सटीक आकार का निरीक्षण करने के लिए ls -lh app_server.log.bz2 कमांड से फाइल मेटाडेटा देखें।

ls कमांड द्वारा निर्मित bz2 फाइल की जांच

2. bzless के जरिए सीधे कंप्रेस्ड डेटा का निरीक्षण

आर्काइव को अलग से एक्सट्रेक्ट किए बिना उसके भीतर का टेक्स्ट तुरंत टर्मिनल पर देखने के लिए bzless app_server.log.bz2 चलाएं।
चूंकि यह बैकएंड में लोकप्रिय less पेजर का इस्तेमाल करता है, इसलिए आप एरो कीज़ या स्पेसबार की मदद से बिना किसी लैग के ऊपर-नीचे स्क्रॉल कर सकते हैं और व्यूअर से बाहर निकलने के लिए बस q दबाना पर्याप्त होता है।

bzless द्वारा कंप्रेस्ड फाइल का इंटरएक्टिव व्यू

3. लाइन नंबर्स सक्रिय करना और कीवर्ड सर्च तकनीक

विश्लेषण के दौरान सटीकता बढ़ाने हेतु प्रत्येक पंक्ति के साथ क्रमांक दर्शाने के लिए bzless -N app_server.log.bz2 का उपयोग किया जाता है।
-N विकल्प टर्मिनल के बाईं ओर रो नंबर जोड़ देता है, जिससे प्रोडक्शन सर्वर के भारी-भरकम लॉग्स में किसी भी संदिग्ध गतिविधि की सटीक लोकेशन ट्रेस करना बेहद आसान हो जाता है।
पेजर इंटरफ़ेस के भीतर रहते हुए किसी खास पैटर्न (जैसे /ERROR) को टाइप करके आप सीधे लक्षित कीवर्ड पर पहुंच सकते हैं; इसके अलावा अगले या पिछले मैच पर जाने के लिए क्रमशः n और N कुंजियों का उपयोग करें।

लाइन नंबर और पैटर्न सर्च के साथ bzless का उपयोग

4. एडवांस्ड एनालिसिस: bzgrep और bzcat के साथ तुलना

यदि आपको पूरे लॉग्स को स्क्रॉल किए बिना केवल त्रुटियों को अलग करना हो, तो bzgrep "ERROR" app_server.log.bz2 निष्पादित करें। यह आर्काइव को खोले बिना ही सीधे उन सभी पंक्तियों को स्क्रीन पर फ़िल्टर कर देता है जहां ERROR स्ट्रिंग मौजूद है।
यह तरीका भारी फाइलों में से फेलियर या क्रैश रिकॉर्ड्स की त्वरित जांच के लिए अत्यंत प्रभावी है।

bzgrep द्वारा कंप्रेस्ड फाइल से त्रुटि संदेश फिल्टर करना

वहीं दूसरी ओर, पाइपलाइन ऑटोमेशन के लिए bzcat app_server.log.bz2 | head -n 2 का उपयोग किया जा सकता है। यह कमांड कंप्रेस्ड फाइल के टेक्स्ट को सीधे स्टैंडर्ड आउटपुट (stdout) पर भेजती है, जिससे पाइप (|) ऑपरेटर के जरिए शुरुआती दो पंक्तियों को आसानी से एक्सट्रेक्ट किया जा सकता है।
इंटरएक्टिव पेजर वाले bzless की तुलना में bzcat सीधे टेक्स्ट स्ट्रीम मुहैया कराता है, जिससे इसे अन्य यूनिक्स टूल्स (head, grep, awk आदि) के साथ स्क्रिप्टिंग में जोड़ना कहीं अधिक अनुकूल रहता है।

bzcat और head पाइपलाइन का उपयोग

इस गाइड में हमने जाना कि Ubuntu पर bzless की सहायता से बिना किसी अतिरिक्त डिस्क ओवरहेड के .bz2 फाइलों का त्वरित विश्लेषण कैसे किया जाता है।
अब से किसी भी बड़े कंप्रेस्ड लॉग को डीकंप्रेस करने के थकाऊ काम से बचें और इस टूल का उपयोग करके अपने डिबगिंग वर्कफ़्लो को तेज़ बनाएं।