एक टेक्स्ट फ़ाइल खोलें और इसे स्वयं अपडेट करें


20

मैं एक टेक्स्ट फ़ाइल कैसे खोल सकता हूं और इसे स्वयं अपडेट करने दूं? topकाम करने के तरीके के समान ।

मैं एक लॉग फ़ाइल खोलना चाहता हूं और इसे उड़ने पर अपडेट करना चाहता हूं।

मैंने अभी कोशिश की है:

$ tail error.log

लेकिन बस एहसास हुआ, कि यह सिर्फ आपको लॉग फ़ाइल में लाइनें दिखाता है।

मैं आरएचईएल 5.10 का उपयोग कर रहा हूं


4
उपयोगtail -f error.log
garethTheRed

आह, तो tailइसका उपयोग करने का सही तरीका है? वाह, मुझे सच में नहीं लगा कि मैं इसका इस्तेमाल कर सकता हूं। मैं बहुत लंबी अभिव्यक्ति की उम्मीद कर रहा था।
केवदोग K K

1
FYI करें, जबकि पूंछ है इस काम के लिए उपकरण, सचमुच open a text file and let it update itselfके साथ हासिल किया जा सकता है watch cat filename
Cululhu

1
@ कथुलु तुम्हारा मतलब watch cat filenameया ऐसा ही। watch filenameनिष्पादित करने का प्रयास करेंगे filename
terdon

@terdon हाँ वास्तव में।
Cthulhu

जवाबों:


29

आप tail -f error.log(से man tail) ढूंढ रहे हैं :

   -f, --follow[={name|descriptor}]
          output appended data as the file grows; -f, --follow, and --fol‐
          low=descriptor are equivalent

यह आपको एक फ़ाइल देखने और उसमें किए गए परिवर्तनों को देखने देगा।


और यह बहुत संसाधनों का उपयोग नहीं करेगा?
केवदोग K K

1
@ Kevdog777 वास्तव में नहीं। संभवतया, यह फ़ाइल को अपडेट करने के लिए हर कुछ सेकंड में इसे फिर से खोलता है। यह वही करने का क्लासिक तरीका है जो आप चाहते हैं।
terdon

1
@terdon, यह केवल (फिर से खुल सकता है) के साथ फिर से खुल जाता है -F। इसके साथ -fबस हर सेकंड पढ़ता है। यह एक तरह है while cat; do sleep 1; done < fileinotailअधिक प्रतिक्रियाशील पूंछ के लिए लिनक्स पर देखें ( inotifyफ़ाइल को संशोधित किया जा रहा है यह जानने के लिए उपयोग करता है)।
स्टीफन चेज़लस

@ स्टीफनचेज़ेलस: मुझे यकीन है कि इसकी तुलना में बहुत अधिक कुशल है। मैं शर्त लगाता हूं कि अगर fd पढ़ने योग्य है और तब तक सोएं जब तक कि fd पर डेटा उपलब्ध न हो, तब तक यह देखने के लिए पोल या पोल का उपयोग करें। हालांकि मैं पूरी तरह से गलत हो सकता है।
मार्टिन योर्क

1
@ LokiAstari, आप बहुत अधिक कुशल नहीं हो सकते हैं कि readहर सेकंड एक सिस्टम कॉल। एक "पढ़ा" selectया pollएक नियमित फ़ाइल पर हमेशा read()एक नियमित फ़ाइल पर ब्लॉक कभी नहीं के बाद से सच हो जाएगा, इसलिए काम नहीं करेगा। यह कहने के बाद कि, GNU tailअब inotifyलिनक्स पर उपयोग करता है, इसलिए inotailअब इसकी आवश्यकता नहीं है।
स्टीफन चेजलस 19

20

स्क्रॉलबैक और खोज के लिए "पूंछ" के बजाय "कम" का उपयोग करें

आप उपयोग कर सकते हैं tail -f error.logया, बेहतर tail -F error.log:।

लेकिन अगर आप फ़ाइल में वापस स्क्रॉल करना चाहते हैं, तो यह बहुत उपयोगी नहीं है।

साथ में

less +F error.log

आप के कार्य को प्राप्त कर सकते हैं tail -f,
लेकिन + के साथ नए इनपुट के पढ़ने में बाधा डाल सकते हैं ।CtrlC

फिर, आप सामान्य lessमोड में हैं,
जहां आप यह देखने के लिए वापस स्क्रॉल कर सकते हैं कि आपके साथ क्या छूट गई है Up/ Down
इसके अलावा, आप रैपिंग, उपयोग Left/ के बिना लंबी लॉग फाइल लाइनों को पढ़ सकते हैं।Right

केवल मिलान रेखाएँ खोजें और दिखाएं

तुम भी साथ नियमित अभिव्यक्ति के लिए खोज सकते /, ?पिछड़े के लिए, nऔर Nअगले के लिए / पिछले।

लॉग फ़ाइलों के लिए बहुत दिलचस्प यह है कि आप सभी मिलानों के लिए गैर-मिलान लाइनों को छिपा सकते हैं& , केवल मैचों को फ़िल्टर करके।

कमांड लाइन पर कुंजी

के Fअंदर के साथ less, आप की तरह मोड जारीtail -f है। कमांड लाइन में अर्थ है "प्रेस इन कुंजियों सीधे कम शुरू करने के बाद"।
+less +F

इसलिए हमने Fस्टार्टअप पर कीपर का उपयोग किया , जिसे निम्नानुसार वर्णित किया गया है:

F  Scroll  forward,  and  keep trying to read when the end of file is
   reached.  Normally this command would be used when already at  the
   end  of the file.  It is a way to monitor the tail of a file which
   is growing while it is being viewed.  (The behavior is similar  to
   the "tail -f" command.)

यह भी देखें multitailकि क्या आपको एक से अधिक लॉग फ़ाइल देखने की आवश्यकता है।


धन्यवाद, लेकिन tail -f error.logमैं क्या जरूरत के लिए एकदम सही है। लॉग फ़ाइल केवल हर घंटे अपडेट की जाती है, इसलिए मेरे उपयोग के लिए पर्याप्त है :-)
Kevdog777

1
इसे अगली बार याद रखना सुनिश्चित करें;)
वोल्कर सेगेल

mostके tail -fसाथ एक विधा भी है F
स्टीफन चेजलस

@ स्टीफनचेज़लस राइट, थैंक्स! हम्मम ... मुझे याद है कि किसी ने mostकुछ समय पहले उल्लेख करने के लिए मुझे धन्यवाद दिया ... और मैं इसे भूल गया।
वोल्कर सीगल

@ स्टीफनचेज़लस लेकिन फिर, केवल मेल खाने वाली लाइनों को दिखाने के mostलिए कम फिल्टर सुविधा नहीं लगती है &? लॉग फ़ाइलों में एक उपयोगी सुविधा, आमतौर पर।
वोल्कर सीगल

5

इसके -fसाथ विकल्प का उपयोग करें tail:

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

या Fअंदर कमांड का उपयोग करें less:

   F      Scroll forward, and keep trying to read when the end of file is reached.  Normally this command would be used when already at the end of the file.  It is a way to mon‐
          itor the tail of a file which is growing while it is being viewed.  (The behavior is similar to the "tail -f" command.)

इस उत्तर में नया क्या है?
ब्लूफॉगी

1
मुझे समझ नहीं आ रहा है कि आप क्या पूछ रहे हैं। यह इस सवाल का दूसरा जवाब था और पहले वाले का उल्लेख था less
अर्कादिअस ड्राज्स्क
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.