मुझे पता है कि यूनिक्स पर एक आदेश था जिसका उपयोग मैं किसी फ़ाइल की निगरानी करने और उसमें लिखे बदलावों को देखने के लिए कर सकता था। यह विशेष रूप से लॉग फ़ाइलों की जाँच के लिए काफी उपयोगी था।
क्या आप जानते हैं कि इसे क्या कहा जाता है?
मुझे पता है कि यूनिक्स पर एक आदेश था जिसका उपयोग मैं किसी फ़ाइल की निगरानी करने और उसमें लिखे बदलावों को देखने के लिए कर सकता था। यह विशेष रूप से लॉग फ़ाइलों की जाँच के लिए काफी उपयोगी था।
क्या आप जानते हैं कि इसे क्या कहा जाता है?
जवाबों:
tail -F
फ़ाइल ऑब्जेक्ट के बजाय फ़ाइल नाम का पालन करेगा, जो लॉग फ़ाइल रोटेशन के मामले में विशेष रूप से उपयोगी है।
tailf
अब पदावनत है और tail -f
सुरक्षित है। (इसके साथ अपने सिस्टम पर इसकी पुष्टि करें man tailf
।) प्रलेखन देखें: man7.org/linux/man-pages/man1/atelf.1.html
जॉन स्कीट के जवाब के अनुसार, आपको शायद पूंछ का मतलब था।
एक और उपयोगी एक घड़ी है ; यह आपको समय-समय पर कमांड चलाने और आउटपुट पूर्ण स्क्रीन को देखने की अनुमति देता है। उदाहरण के लिए:
घड़ी -n 10-डी ls -l / var / प्रशंसा / संदेश
ls -l /var/adm/messages
प्रत्येक 10 सेकंड में कमांड चलाएगा , और बाद के रन के बीच आउटपुट में अंतर को उजागर करेगा। (उदाहरण के लिए, लॉगफ़ाइल कितनी तेज़ी से बढ़ रहा है, यह देखने के लिए उपयोगी है)।
inotifywait
से inotify उपकरण यदि आप एक आदेश हर बार एक फ़ाइल (या एक निर्देशिका में किसी भी फाइल) परिवर्तन चलाना चाहते हैं उपयोगी है। उदाहरण के लिए:
inotifywait -r -m -e modify /var/log |
while read path _ file; do
echo $path$file modified
done
path
एक चर नाम के लिए सबसे बड़ी पसंद नहीं है। पर zsh
, ऐसा लगता है कि पर्यावरण संस्करण केस-संवेदी नहीं हैं। मेरे लिए, सेटिंग के path
कारण PATH
भी सेट हो जाते हैं, और मूल रूप से इसका मतलब यह है कि जब तक आप इसे ठीक नहीं करते तब तक कुछ भी निष्पादित नहीं होगा। पर bash
, सेटिंग path
का कोई प्रभाव नहीं पड़ता है PATH
।
मैं less +FG
1 ओवर का उपयोग करना पसंद करता हूं 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 को हैट-टिप ।
alias
अपने इच्छित विकल्पों के साथ सेट करना याद रखें , ताकि आपको हर बार उन्हें टाइप न करना पड़े।
मैं एक लाटेकस फ़ाइल का संपादन कर रहा हूं और बीच में कहीं बदलाव के लिए भी इसकी निगरानी करना चाहता था। मैंने निम्नलिखित लिटिल शेल स्क्रिप्ट को कोड़ा, जो मेरे लिए उपयोगी साबित हुआ। मुझे उम्मीद है कि यह किसी और के लिए भी काम आएगा।
#!/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"`
।
NEW=`tree -sDct . -I 'ignore_pattern|another_pattern'`
टेल मानक, पारंपरिक, हर जगह यूनिक्स उपकरण उपलब्ध है। थोड़ा अधिक परिष्कृत उपकरण मल्टीटैल है जो एक साथ कई फाइलों की निगरानी कर सकता है और सिंटैक्स हाइलाइटिंग करता है।
अगर मैं फ़ाइल को केवल टेलिंग के अलावा आसपास खोजना चाहता हूं, तो मैं "F" कमांड के साथ कम उपयोग करता हूं।
पूंछ का उपयोग करते समय, ध्यान रखें कि यदि फ़ाइल को रोल किया जा सकता है या एडिट द्वारा प्रतिस्थापित किया जा सकता है तो अतिरिक्त तर्क की आवश्यकता होती है (विम के लिए डिफ़ॉल्ट मोड: w)।
पूंछ -f फ़ाइल डिस्क्रिप्टर को संग्रहीत करने और उसका पालन करने के लिए पूंछ का कारण बनेगी। यदि फ़ाइल को प्रतिस्थापित किया जाता है तो डिस्क्रिप्टर को बदल दिया जाएगा। फ़ाइल डिस्क्रिप्टर का अनुसरण करने का लाभ यह है कि यदि फ़ाइल का नाम बदला गया है, तो आप अभी भी इसका अनुसरण कर रहे हैं।
tail --follow = टेल फाइल को नामांकित फ़ाइल को समय-समय पर फिर से खोलकर ट्रैक करेगा कि क्या इसे बदला गया है।
--retry एक अन्य उपयोगी विकल्प है यदि आप एक लॉग फ़ाइल को पूंछना चाहते हैं लेकिन फ़ाइल अभी तक नहीं बनाई गई है।
tail -F एक शॉर्टकट है --follow = --retry के लिए।
टेलफ को भूल जाओ, जो आप चाहते हैं वह आदेश है। यहाँ अंतर को देखने के लिए एक अच्छी चाल है, क्योंकि वे वास्तविक समय में (या करीब) 2 फाइलों के बीच या एक फाइल में लिखे जा रहे हैं।
आप व्यवहार को संशोधित करने के लिए इन तरीकों का उपयोग कर सकते हैं, जो भी आप चाहते हैं, जैसे रिकॉर्ड रखने के लिए फ़ाइल में परिवर्तन लिखना। नीचे दिए गए आदेशों के लिए घड़ी या अन्य विकल्पों के अंतराल के साथ खेलें।
आपके पास 1 फ़ाइल है और आप इसे देखना चाहते हैं क्योंकि इसमें परिवर्तन किए गए हैं:
तो क्या करना है:
cp file file2
touch check-differences.sh
nano check-differences.sh
chmod 755 check-differences.sh
#!/bin/bash
diff file file2
cp file file2
watch ./check-differences
यह डिफ़ॉल्ट रूप से हर 2 सेकंड में अपडेट होगा। इसलिए यदि आपको वापस जाने और उन्हें पढ़ने की आवश्यकता है, तो स्क्रिप्ट में फ़ाइल में अंतर के आउटपुट को लिखें।
या अपनी स्क्रिप्ट को नियमित रूप से चलाने के लिए क्रोन का उपयोग करें यदि आपको आउटपुट देखने की आवश्यकता नहीं है।
जबकि tail -f somefile.txt
रहता नए डेटा से स्क्रॉल, मैं कभी कभी पसंद less +G somefile.txt
फ़ाइल में नवीनतम डेटा के एक पैच को देखने के लिए और साथ ही।