क्या बड़ी लॉग फ़ाइलों पर पूंछ -f का उपयोग करना ठीक है


9

मैं त्रुटियों के लिए एक बड़ी लॉग फ़ाइल (1 जीबी के करीब) की निगरानी करना चाहूंगा। मैं चाहता हूं कि यह वास्तविक समय के करीब हो (कुछ सेकंड की देरी ठीक है)। मेरी योजना का उपयोग करने के लिए है tail -f | grep। क्या शून्य से बाइट से 1 जीबी तक लंबे समय से इसे चलाने पर इस तरह की विधि का उपयोग करने के साथ कोई प्रदर्शन समस्या है? क्या इस तरह की निगरानी के लिए किसी भी मानक प्रथाओं का उपयोग किया जाता है। ध्यान दें कि मैं Solaris 10 पर उपलब्ध मानक यूनिक्स कमांड का उपयोग करके ऐसा करना चाहूंगा।

यदि यह संभव है, तो मेरी फ़ाइल भी लुढ़क जाती है और मुझे हल करने के लिए एक और समस्या है :)। उपयोग करना tail -F( --follow=name) मेरे लिए एक विकल्प नहीं है क्योंकि -Fसर्वर पर समर्थित नहीं है जिसे मैं इस पर चलाना चाहता हूं। मेरी योजना एक स्क्रिप्ट का उपयोग करने की है जो इस पूंछ को शुरू करेगी और यह पता लगाने के लिए कि क्या फ़ाइल को लुढ़का हुआ है। यदि हाँ, तो पूंछ को मारें और इसे पुनरारंभ करें। कोई बेहतर तरीका?


आपका मतलब है "मार tail", है ना?
स्टेफेन जिमेनेज़

हां, "किल टेल", नहीं मिला। धन्यवाद, सवाल संपादित किया
मनोज एनवी

1
यदि 2 जीबी आकार की फ़ाइल में नई लाइन वर्ण नहीं है, तो पूंछ कैसे काम करती है?

जवाबों:


6

मेरे लिनक्स सिस्टम (जीएनयू कोरुटिल्स 8.12) पर, मैं यह जांचने (उपयोग करने strace) में सक्षम था कि call सिस्टम कॉल का tail -fउपयोग करता है ताकि lseekअधिकांश फ़ाइल जल्दी से छोड़ दें:

lseek(3, 0, SEEK_CUR)                   = 0
lseek(3, 0, SEEK_END)                   = 194086
lseek(3, 188416, SEEK_SET)              = 188416

इसका मतलब है कि ट्रैक की गई फ़ाइल का आकार वैसे भी मायने नहीं रखना चाहिए।

शायद आप देख सकते हैं कि क्या आपके सिस्टम पर भी यही लागू होता है। (जाहिर है, यह मामला होना चाहिए।)

-
1. मैंने भी ---disable-inotify, केवल मामले में, अनिर्दिष्ट के साथ समर्थन को अक्षम करने का प्रयास किया ।


2
रियल मेन ने स्रोत पढ़ा: (
गिल्स एसओ- बुराई को रोकना '

2
@Gilles। मैं ओपी (या पाठक) को यह नहीं सिखा सकता कि अगर वह पहले से ही नहीं जानता है तो स्रोत को कैसे पढ़ें। उसे इस्तेमाल करने के लिए बताने के लिए बहुत आसान है strace;)
स्टीफन जिमेनेज़

वास्तव में, ऐसी प्रणाली पर जहां tail -Fसमर्थित नहीं है, संभावना है कि straceउपलब्ध नहीं है ...
स्टीफन Gimenez

trussसोलारिस पर इसी उपयोगिता है।
गिल्स एसओ- बुराई को रोकें '

और यह इसी तरह की कॉल को दिखाता है। llseek (0, 0, SEEK_CUR) = 0, llseek (0, 0xFFFFFFFFFFF5FFF6, SEEK_END) = 7923269
jlliagre

5

यदि यह एक नियमित फ़ाइल (एक पाइप के विपरीत) पर लागू होता है, तो जीएनयू पूंछ और ओपनबीएसडी पूंछ (जब तक कहा जाता है -n +N) दोनों फ़ाइल के अंत की तलाश करते हैं, तो उस रेखा को खोजने के लिए पीछे की ओर काम करता है जहां इसे प्रिंट करना शुरू करना चाहिए। मुझे नहीं पता कि सोलारिस ऐसा ही करता है, लेकिन यह एक उचित दृष्टिकोण है, इसलिए मैं अधिकांश यूनियनों से यही करने की उम्मीद करता हूं। इसलिए फ़ाइल का आकार प्रदर्शन के लिए अप्रासंगिक है।


2

मैं हर दिन ऐसा करता हूं। मैं आमतौर पर हमारे परीक्षण और उत्पादन सर्वर पर एक दर्जन या तो लॉग स्कैन करता हूं tail -f logs/*.{log,err,out}। प्रारंभिक लोड थोड़ा अधिक है (ग्लोबेड फ़ाइलों की संख्या के आधार पर), लेकिन उसके बाद, स्ट्रीमिंग वास्तविक समय है।

Grep भेजने के बजाय, मैं execकार्यक्षमता का उपयोग करता screenहूं क्योंकि मैं आम तौर पर सभी आउटपुट (पूर्ण ट्रेसबैक और समस्या से संबंधित संदेशों के लिए) देखना चाहता हूं। उदाहरण के लिए,

!:sed -n s/.*Exception.*/\007/p

जब भी Exception शब्द मिलता है टर्मिनल को बीप (या फ़्लैश) करने के लिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.