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

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

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

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

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

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

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

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

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