Buka file teks dan biarkan itu memperbarui sendiri

20

Bagaimana saya bisa membuka file teks dan membiarkannya memperbarui sendiri? Mirip dengan cara topkerjanya.

Saya ingin membuka file log dan melihatnya memperbarui sendiri dengan cepat.

Saya baru saja mencoba:

$ tail error.log

Tetapi baru disadari, bahwa itu hanya menunjukkan kepada Anda baris dalam file log.

Saya menggunakan RHEL 5.10

Kevdog777
sumber
4
Gunakantail -f error.log
garethTheRed
Ah, jadi tailapakah cara yang benar untuk menggunakannya? Wow, saya benar-benar berpikir saya tidak bisa menggunakannya. Saya mengharapkan ekspresi yang lebih lama.
Kevdog777
1
FYI, sementara ekor adalah alat untuk pekerjaan itu, secara harfiah open a text file and let it update itselfdapat dicapai dengan watch cat filename.
Cthulhu
1
@ Cthulhu maksudmu watch cat filenameatau serupa. watch filenameakan berusaha untuk mengeksekusi filename.
terdon
@terdon Ya memang.
Cthulhu

Jawaban:

29

Anda mencari tail -f error.log(dari man tail):

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

Itu akan memungkinkan Anda menonton file dan melihat perubahan yang dilakukan padanya.

terdon
sumber
Dan ini tidak akan menghabiskan banyak sumber daya?
Kevdog777
1
@ Kevdog777 tidak benar-benar tidak. Agaknya, itu hanya membuka kembali file setiap beberapa detik untuk memperbaruinya. Ini adalah cara klasik untuk melakukan apa yang Anda inginkan.
terdon
1
@terdon, hanya dibuka kembali (boleh dibuka kembali) dengan -F. Dengan -fhanya membaca setiap detik. Itu seperti while cat; do sleep 1; done < file. Lihat inotaildi Linux untuk melihat ekor yang lebih reaktif (digunakan inotifyuntuk mengetahui kapan file sedang dimodifikasi).
Stéphane Chazelas
@ StéphaneChazelas: Saya yakin ini jauh lebih efisien dari itu. Saya berani bertaruh itu menggunakan pilih atau jajak pendapat untuk melihat apakah fd dapat dibaca dan kemudian tidur sampai ada data yang tersedia di fd. Padahal aku bisa saja salah total.
Martin York
1
@LokiAstari, Anda tidak bisa menjadi lebih efisien daripada readpanggilan sistem setiap detik. "Baca" selectatau pollpada file biasa akan selalu kembali benar karena read()tidak pernah memblokir pada file biasa, jadi tidak akan berfungsi. Karena itu, GNU tailsekarang digunakan inotifydi Linux, jadi inotailtidak lagi diperlukan.
Stéphane Chazelas
20

Gunakan "kurang" daripada "ekor" untuk scrollback dan cari

Anda dapat menggunakan tail -f error.logatau, lebih baik: tail -F error.log.

Tetapi jika Anda ingin menggulir kembali file tersebut, itu tidak terlalu berguna.

Dengan

less +F error.log

Anda mendapatkan fungsi tail -f,
tetapi dapat mengganggu pembacaan input baru dengan Ctrl+ C.

Kemudian, Anda berada dalam lessmode normal , di
mana Anda dapat menggulir ke belakang untuk melihat apa yang mungkin Anda lewatkan dengan Up/ Down
Juga, Anda dapat membaca baris file log yang panjang tanpa membungkus, menggunakan Left/Right

Cari, dan hanya tampilkan garis yang cocok

Anda juga dapat mencari ekspresi reguler dengan /, ?untuk mundur, ndan Nberikutnya / sebelumnya.

Sangat menarik untuk file log adalah Anda dapat menyembunyikan semua baris yang tidak cocok dengan pencarian &, memfilter hanya yang cocok.

Tombol pada baris perintah

Dengan Fdalam less, Anda terus yang tail -fmodus -seperti.
Baris +perintah less +Fberarti "tekan tombol-tombol ini secara langsung setelah memulai lebih sedikit".

Jadi kami menggunakan penekanan tombol Fsaat startup, yang digambarkan sebagai:

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

Lihat juga multitailjika Anda perlu menonton lebih dari satu file log.

Volker Siegel
sumber
Terima kasih, tetapi tail -f error.logsangat cocok untuk apa yang saya butuhkan. File log hanya diperbarui setiap jam, jadi cukup untuk saya gunakan :-)
Kevdog777
1
Pastikan untuk mengingatnya untuk waktu berikutnya;)
Volker Siegel 9'14
mostjuga memiliki tail -fmode dengan F.
Stéphane Chazelas
@ StéphaneChazelas benar, terima kasih! Hmmm ... Saya ingat seseorang mengucapkan terima kasih karena telah menyebutkan mostbeberapa saat yang lalu ... dan saya lupa.
Volker Siegel
@ StéphaneChazelas Tapi kemudian, mostsepertinya tidak memiliki fitur filter kurang &untuk hanya menampilkan garis yang cocok? Fitur yang berguna dalam file log, biasanya.
Volker Siegel
5

Gunakan -fopsi dengan tail:

-f, --follow [= {name | descriptor}] menghasilkan data yang ditambahkan saat file bertambah; -f, --follow, dan --follow = descriptor adalah setara

Atau gunakan Fperintah di dalam 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.)
Arkadiusz Drabczyk
sumber
Apa yang baru dalam jawaban ini?
bluefoggy
1
Saya tidak mengerti apa yang Anda tanyakan. Itu adalah jawaban kedua untuk pertanyaan ini dan yang pertama yang disebutkan less.
Arkadiusz Drabczyk