सवाल फ़ाइल में परिवर्तनों की निगरानी करने के लिए शैल कमांड - इसे फिर से क्या कहा जाता है?


मुझे पता है कि यूनिक्स पर एक कमांड था जिसे मैं फ़ाइल की निगरानी करने के लिए उपयोग कर सकता था और इसमें लिखे गए परिवर्तन देख सकता था। यह विशेष रूप से लॉग फ़ाइलों की जांच के लिए काफी उपयोगी था।

क्या आप जानते हैं कि इसे क्या कहा जाता है?


139
2018-04-30 21:00


मूल




जवाब:


क्या मतलब है आपका

tail -f logfile.log

?

(पूंछ के लिए मैन पेज)


188
2018-04-30 21:01



हाँ, यह वास्तविक समय है। - Adam Gibbins
Sidenote: यदि आपका वितरण tailf कमांड प्रदान करता है, तो पूंछ-एफ के वरीयता में इसका उपयोग करें। tailf अधिक कुशल है क्योंकि इसे देखे जाने वाले फ़ाइल तक पहुंचने की आवश्यकता नहीं है यदि इसे लिखा नहीं जा रहा है (अगर आप एनीम अपडेटिंग के साथ फाइल सिस्टम को घुमाते हैं तो मतदान पहुंच परेशान होती है।) - Mihai Limbăşan
पर सुपर उपयोगकर्ता मुझे एक जवाब मिला की सिफारिश पूंछ-एफ के बजाय -f भी - Rafa
tail -F फ़ाइल ऑब्जेक्ट्स के बजाए फ़ाइल नामों का पालन करेगा, जो लॉग फ़ाइल रोटेशन के मामले में विशेष रूप से उपयोगी है। - Amir Ali Akbari
अपडेट करें, कुछ साल बाद: tailf अब बहिष्कृत है और tail -f सुरक्षित है। (इसके साथ अपने सिस्टम पर पुष्टि करें man tailf।) दस्तावेज़ीकरण देखें: man7.org/linux/man-pages/man1/tailf.1.html - exp1orer


जॉन स्कीट के जवाब के अनुसार, शायद आप पूंछ का मतलब है।

एक और उपयोगी है घड़ी; यह आपको समय-समय पर कमांड चलाने और आउटपुट पूर्ण स्क्रीन देखने की अनुमति देता है। उदाहरण के लिए:

घड़ी -एन 10-डी एलएस -एल / ​​var / adm / संदेश

आदेश चलाएगा ls -l /var/adm/messages प्रत्येक 10 सेकंड, और बाद के रनों के बीच आउटपुट में अंतर को हाइलाइट करें। (उदाहरण के लिए लॉगफाइल कितनी जल्दी बढ़ रहा है यह देखने के लिए उपयोगी)।


114
2018-04-30 21:07





मैं उपयोग करना पसंद करते हैं less +FG1 ऊपर tail -f क्योंकि मुझे खुद को एक विशिष्ट त्रुटि या आईडी के लिए लॉग फ़ाइल खोजने की आवश्यकता है। अगर मुझे कुछ खोजना है, तो मैं टाइप करता हूं ^C फ़ाइल का पालन करना बंद करने के लिए और ? पीछे की ओर खोज शुरू करने के लिए।

कुंजी बाइंडिंग काफी समान हैं vi। किसी भी कमांड का उपयोग कर स्टार्टअप पर शुरू किया जा सकता है + विकल्प:

+cmd   Causes  the  specified  cmd  to be executed each time a new file is
       examined.  For example, +G causes less to  initially  display  each
       file starting at the end rather than the beginning.

वास्तव में लंबे लॉग के लिए, मुझे इसका उपयोग करने में सुविधाजनक लगता है -n विकल्प जो लाइन नंबरिंग बंद कर देता है। मैनपेज से:

-n or --line-numbers
          Suppresses line numbers.  The default (to use line numbers)  may
          cause  less  to run more slowly in some cases, especially with a
          very large input file.  Suppressing line  numbers  with  the  -n
          option  will  avoid this problem.  Using line numbers means: the
          line number will be displayed in the verbose prompt and in the =
          command,  and the v command will pass the current line number to
          the editor (see also  the  discussion  of  LESSEDIT  in  PROMPTS
          below).

1. हैट-टिप करने के लिए rgmarcha टिप्पणियों में इसे इंगित करने के लिए।


33
2018-04-30 23:44



एक सेट करने के लिए याद रखें alias अपने वांछित विकल्पों के साथ, इसलिए आपको उन्हें हर बार टाइप करने की आवश्यकता नहीं है। - Michael Hampton♦
असल में, आपको आम तौर पर ज्यादातर मामलों में उपनामों पर खोल कार्यों को प्राथमिकता देना चाहिए। - tripleee


inotifywait से inotify उपकरण उपयोगी है अगर आप हर बार एक फ़ाइल (या निर्देशिका में किसी भी फाइल) में एक आदेश चलाने के लिए चाहते हैं। उदाहरण के लिए:

inotifywait -r -m -e modify /var/log | 
   while read path _ file; do 
       echo $path$file modified
   done

27
2018-06-02 12:13





पूंछ बहुत बढ़िया है ... फ़ाइल पर कम शुरू किया जा सकता है यानी कम मायफाइल फिर एफ दबाएं। इसमें पूंछ के रूप में कम कार्य है।


19
2018-04-30 21:04



कम + एफ माईफाइल इसे भी बना देगा - rgmarcha


मैं एक लाटेक्स फ़ाइल संपादित कर रहा हूं और बीच में कहीं भी बदलावों के लिए इसे मॉनिटर करना चाहता था। मैंने निम्नलिखित छोटी शेल स्क्रिप्ट को मार दिया जो मेरे लिए उपयोगी साबित हुआ। मुझे उम्मीद है कि यह किसी और के लिए भी उपयोगी होगा।

#!/bin/bash
FILE="$1"
CMD="$2"
LAST=`ls -l "$FILE"`
while true; do
  sleep 1
  NEW=`ls -l "$FILE"`
  if [ "$NEW" != "$LAST" ]; then
    "$CMD" "$FILE"
    LAST="$NEW"
  fi
done

इसे के रूप में सहेजें watch.sh और करो chmod u+x watch.sh। फिर मैं इसे निम्नानुसार निष्पादित करता हूं:

./watch.sh file.tex pdflatex

यदि आप वास्तविक संशोधन होने पर केवल आदेश चलाने के लिए चाहते हैं, तो आप इसका उपयोग कर सकते हैं `md5sum "$FILE"` के बजाय `ls -l "$FILE"`


12
2017-10-10 09:32



एक फ़ाइल के बजाय निर्देशिका और उनकी सामग्री देखने के लिए: NEW=`tree -sDct . -I 'ignore_pattern|another_pattern'` - Andy


आप इसका उपयोग कर सकते हैं tailf  कमांड को सबसे आसान बनाएं

tailf logfile.log

7
2017-10-15 13:26





आप इनोटिफाइव / इनोटिफाइवेट का भी उपयोग कर सकते हैं जो कर्नेल में उपप्रणाली को निष्क्रिय करता है। इस तरह आप "ओपन", "क्लोज़" या "एक्सेस" जैसी चीज़ों के लिए भी देख सकते हैं।

लेकिन अगर आप बस स्टडआउट के लिए संलग्न लाइनों को प्राप्त करना चाहते हैं तो मैं पूंछ पर सहमत हूं।


5
2018-04-30 22:40





पूंछ मानक, पारंपरिक, हर जगह यूनिक्स उपकरण उपलब्ध है। थोड़ा और परिष्कृत उपकरण है multitail जो एक साथ कई फाइलों की निगरानी कर सकता है और सिंटैक्स हाइलाइटिंग करता है।


2
2018-04-30 22:58





अगर मैं इसे फाइल करने के अलावा फ़ाइल के चारों ओर खोजना चाहता हूं, तो मैं "एफ" कमांड के साथ कम उपयोग करता हूं।

पूंछ का उपयोग करते समय, ध्यान रखें कि फ़ाइल को रोलिंग या संपादित करके प्रतिस्थापित किया जा सकता है (विम के लिए डिफ़ॉल्ट मोड: डब्ल्यू)।

tail -f पूंछ फ़ाइल डिस्क्रिप्टर को स्टोर करने और इसका पालन करने का कारण बन जाएगा। अगर फ़ाइल को प्रतिस्थापित किया गया है तो वर्णनकर्ता बदल दिया जाएगा। फ़ाइल डिस्क्रिप्टर का पालन करने का लाभ यह है कि यदि फ़ाइल का नाम बदला गया है, तो भी आप इसका पालन करेंगे।

tail --follow = पूंछ को नामित फ़ाइल को समय-समय पर फिर से खोलकर यह देखने के लिए कर देगा कि इसे बदल दिया गया है या नहीं।

- अगर आप एक लॉग फ़ाइल को पूंछ करना चाहते हैं तो - एक और उपयोगी विकल्प है लेकिन फ़ाइल अभी तक नहीं बनाई गई है।

पूंछ-एफ --follow = --retry के लिए एक शॉर्टकट है।


2
2018-05-27 15:47