फ़ाइल नाम के बाद "टेल-ऑफ़" के लिए वैकल्पिक


59

मेरे पास कुछ लॉग्स हैं जो समयबद्ध घूर्णन फ़ाइल लकड़हारे का उपयोग करके उत्पन्न किए जा रहे हैं। यह एक फ़ाइल के लिए लॉग इन करता है tool.log, और आधी रात को, इसे tool.log.<date>एक नई शुरुआत करता है tool.log

मेरे पास tail -f tool.logलॉग्स पर नज़र रखने के लिए मशीन पर एक रनिंग है, लेकिन आधी रात को, जब tool.logइसका नाम बदला जाता है tool.log.<date>, tailतो रेनॉ फ़ाइल को देखना जारी रखता है।

मैं जिस चीज की उम्मीद कर रहा हूं, वह एक ऐसा उपकरण है , जो इनोड के अनुसरण के बजाय, tailनामित फ़ाइल की निगरानी करना जारी रखेगा tool.log

क्या ऐसा कुछ मौजूद है? यदि नहीं, तो मैं इस उद्देश्य के लिए पायथन में अपना स्वयं का लिख ​​सकता हूं।

जवाबों:


90

कुछ कार्यान्वयन tailइसके लिए एक विकल्प है; यहाँ GNU टेल के लिए मैन पेज से विवरण दिया गया है:

-F
के समान --follow=name --retry

-f, --follow[ ={ नाम | डिस्क्रिप्टर }]
आउटपुट ग्रोथ डेटा जैसे जैसे फाइल बढ़ता है; -f, --followऔर --follow=descriptorसमतुल्य हैं

--retry
किसी फ़ाइल को खोलने की कोशिश करते रहें, भले ही वह अप्राप्य हो; नाम से अनुसरण करते समय उपयोगी है, अर्थात, के साथ--follow=name

चूंकि यह विकल्प POSIX द्वारा निर्दिष्ट नहीं है, आप हर जगह इस पर निर्भर नहीं रह सकते। कुछ ज्ञात कार्यान्वयन:

  • GNU --Fजैसा कि ऊपर वर्णित है
  • मैक ओएस एक्स , फ्रीबीएसडी और नेटबीएसडी --Fसमान प्रभाव के साथएक समानविकल्प है
  • OpenBSD --fपर्याप्त है (यदि फ़ाइल को प्रतिस्थापित किया जाता है (यानी, इनोड नंबर बदलता है), पूंछ फ़ाइल को फिर से खोल देगी और जारी रखेंगी)
  • सोलारिस - कोई समकक्ष
  • बिजीबॉक्स --Fहाल के संस्करणों में उपलब्ध है, लेकिन इसे संकलित किया जाना चाहिएENABLE_FEATURE_FANCY_TAIL(यह डिफ़ॉल्ट रूप से संकलित नहीं है)

55

वैकल्पिक tail -Fआदेश है।

-Fविकल्प का अर्थ है --follow=nameके साथ --retryविकल्प है, तो पूंछ अपनी फ़ाइल को देख रहा है, भले ही वह हटा दिया गया है और बनाया फिर से।


5

चूंकि आपने विकल्प मांगा है :

lessउपयोगिता के लिए एक विकल्प हो सकता tail -F

इसे निम्नानुसार चलाना होगा: less --follow-name filename.logऔर Shift+ दबाएं F

यह आपको उसी तरह के परिणाम देगा tail -F


धन्यवाद। मैं केवल एक विकल्प के बाद था क्योंकि मैं पूंछ -F से अनजान था। हमेशा विकल्प जानने के लिए अच्छा है।
ह्यूग

4

एक अन्य विकल्प watchकमांड का उपयोग करना होगा , जो हर n सेकंड में हर 2 सेकंड में इस कमांड को दोहराएगा:

watch -n2 "tail tool.log"

जब आप लॉग देखना पूरा कर लें तो कमांड को छोड़ने के लिए Ctrl+ Cका उपयोग करें ।


1
ऐसा लगता है कि यह बहुत सारे डुप्लिकेट संदेश बनाएगा यदि लॉग ताज़ा किए गए टाइमर की तुलना में धीमी हो जाए, और यदि इसे तेजी से स्क्रॉल किया जाए तो कुछ संदेश छूट जाएंगे।
बोबसन

3
वॉच पूरी स्क्रीन पर ले जाता है, इसलिए यह संदेशों को डुप्लिकेट नहीं करेगा, लेकिन यह वापस स्क्रॉल करने की क्षमता को हटा देगा।
ह्यूग

3

lnav एक और शानदार उपकरण है जो फ़ाइल नाम का अनुसरण करता है।

आप इसे एक निर्देशिका में भी इंगित कर सकते हैं और यह सभी प्रकार की अन्य स्वच्छ सुविधाओं के अलावा, उस निर्देशिका की सभी फ़ाइलों को पूंछ देगा।


मैंने पाया है कि यह काटे हुए और / या नामांकित रोटेट किए गए लॉग को हैंडल नहीं करता है (मुझे यकीन नहीं है कि जो मेरे विशेष मामले में इसे परेशान कर रहा है) इसलिए लॉग आधी रात को बंद होने तक दिखाई देते हैं जब तक कि मैं lnav को पुनरारंभ नहीं करता। क्या मुझे इसके लिए कुछ स्पष्ट स्विच या तकनीक याद आ रही है, मुझे आश्चर्य है कि ऐसा लगता है जैसे इसे अपने स्ट्राइड में लेना चाहिए?
स्टुअर्ट हिकिनबॉटम

यह इस बात पर निर्भर करता है कि फ़ाइल को कैसे काट दिया जाता है। यदि आप -rध्वज को उत्तीर्ण करते हैं, तो यह फ़ाइल नाम पुनः लोड करेगा (और किसी भी पहले घुमाए गए लॉग को लोड करेगा)
वेन वर्नर

1

मुझे यकीन नहीं है कि अगर multitailआपके विशिष्ट मामले को संभाल लेंगे, लेकिन मुझे यकीन है कि यह करता है। मल्टीटैल बहुत कुछ करता है जो आप करना चाहते tailहैं।

https://en.wikipedia.org/wiki/MultiTail


1
हाँ, यह होगा - multitail -f <name1> -f <name2> -f <name3> ...। यह उदाहरण एक साथ कई फ़ाइलों का अनुसरण करता है, जिसे अलग-अलग विंडो में दिखाया जाएगा।
स्टुअर्ट हिकिनबॉटम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.