Bir metin dosyası açın ve kendini güncellemesine izin verin


20

Bir metin dosyasını nasıl açabilir ve kendini güncellemesine nasıl izin verebilirim? Çalışma şekline benzer top.

Bir günlük dosyası açmak ve anında kendini güncellemek izlemek istiyorum.

Ben sadece denedim:

$ tail error.log

Ama fark ettim, sadece günlük dosyasındaki satırları gösteriyor.

RHEL 5.10 kullanıyorum


4
Kullanımtail -f error.log
garethTheRed

Ah, taildoğru şekilde mi kullanıyorsunuz? Vay canına, bunu gerçekten kullanabileceğimi düşünmedim. Çok daha uzun bir ifade bekliyordum.
Kevdog777

1
FYI, kuyruk için bir araç olsa da, kelimenin tam anlamıyla open a text file and let it update itselfelde edilebilir watch cat filename.
Cthulhu

1
@Cthulhu demek istedin watch cat filenameya da benzeri. watch filenameyürütmeye çalışır filename.
terdon

@terdon Evet gerçekten.
Cthulhu

Yanıtlar:


29

Şunu arıyorsunuz tail -f error.log(itibaren man tail):

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

Bu, bir dosyayı izlemenizi ve dosyada yapılan değişiklikleri görmenizi sağlar.


Ve bu çok fazla kaynak kullanmayacak mı?
Kevdog777

1
@ Kevdog777 gerçekten hayır. Muhtemelen, dosyayı güncellemek için birkaç saniyede bir yeniden açar. Gerçi istediğini yapmanın klasik yolu budur.
terdon

1
@terdon, sadece yeniden açılır (yeniden açılabilir) -F. Onunla -fher saniye okur. Bir gibi while cat; do sleep 1; done < file. Daha reaktif bir kuyruk inotailiçin Linux'a bakın ( dosyanın ne zaman değiştirildiğini bilmek için kullanılır). inotify
Stéphane Chazelas

@ StéphaneChazelas: Eminim bundan çok daha verimli. Ben fd okunabilir olup olmadığını görmek için seçin veya anket kullanın ve sonra fd veri mevcut olana kadar uyku bahis. Yine de tamamen yanlış olabilirdim.
Martin York

1
@LokiAstari, bir readsistemin her saniyede aradığı kadar verimli olamazsınız . Normal bir dosyadaki "okuma" selectveya pollnormal bir dosya her zaman true değerini döndürür, çünkü read()normal dosya üzerinde hiçbir zaman engel olmaz, bu nedenle çalışmaz. Bununla birlikte, GNU tailartık inotifyLinux üzerinde kullanıyor , bu yüzden inotailartık gerekli değil.
Stéphane Chazelas

20

Kaydırma ve arama için "kuyruk" yerine "daha az" kullanın

Sen kullanabilirsiniz tail -f error.logiyi veya: tail -F error.log.

Ancak dosyaya geri dönmek istiyorsanız, bu çok yararlı değildir.

İle

less +F error.log

işlevini alırsınız tail -f,
ancak yeni girdinin okunmasını + ile kesebilir .CtrlC

Daha sonra, normal lessmoddasınız,
burada neyi kaçırmış olabileceğinizi görmek için geri dönebilirsinizUp / Down
Ayrıca, uzun günlük dosya satırlarını Left/Right

Yalnızca eşleşen satırları arayın ve gösterin

Ayrıca düzenli ifadeleri arama yapabilirsiniz /, ?geriye yönelik, nve Nbir sonraki için / önceki.

Günlük dosyaları için çok ilginç olan , sadece eşleşmeleri filtreleyerek , bir arama için eşleşmeyen tüm satırları gizleyebilmenizdir .&

Komut satırındaki tuşlar

İle Fless, sen devamtail -f benzeri modu. Komut satırı içinde vasıtası "doğrudan daha az başladıktan sonra bu tuşları".
+less +F

Bu yüzden Fbaşlangıçta tuş basımı kullandık , bu da şu şekilde tanımlandı:

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.)

multitailBirden fazla günlük dosyası izlemeniz gerekip gerekmediğine de bakın .


Teşekkürler, ama tail -f error.logihtiyacım olan şey için mükemmel. Günlük dosyası sadece her saat güncellenir, bu yüzden benim kullanım için yeterlidir :-)
Kevdog777

1
Bir dahaki sefere hatırladığınızdan emin olun;)
Volker Siegel

mostile de bir tail -fmodu vardır F.
Stéphane Chazelas

@ StéphaneChazelas doğru, teşekkürler! Hmmm ... Birisinin bana mostbir süre önce bahsettiğim için teşekkür ettiğini hatırlıyorum ... ve unuttum.
Volker Siegel

@ StéphaneChazelas Ancak, sadece eşleşen satırları göstermek mostiçin daha az filtre özelliği yok gibi görünüyor &? Genellikle günlük dosyalarında kullanışlı bir özellik.
Volker Siegel

5

Şununla -fseçeneği kullan tail:

-f, --follow [= {name | descriptor}] dosya büyüdükçe eklenen verileri çıktılar; -f, --follow ve --follow = tanımlayıcı eşdeğerdir

Veya Fiçindeki komutu kullanın 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.)

Bu cevaptaki yenilikler neler?
bluefoggy

1
Ne istediğini anlamıyorum. Bu sorunun ikinci yanıtı ve ilk soru bu oldu less.
Arkadiusz Drabczyk
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.