Apakah `tail -f` lebih efisien daripada` less + F`?

34

Artikel ini menunjukkan beberapa alasan untuk menggunakan less +Flebih tail -f. Sebagian besar alasannya adalah tentang fitur , bukan alasan teknis : less +Fdapat menyoroti, mencari, menavigasi file.

Bagaimana dengan alasan teknisnya ?

AFAIK, lessmenggunakan polling setiap satu detik untuk memperbarui file, sementara tail, sebagaimana POSIX didefinisikan menggunakan loop yang tidur selama 1 detik dan menyalin setiap byte yang tersedia. Ini cukup tetapi POSIX juga mendorong implementasi untuk menggunakan metode yang lebih efisien. Paling tidak GNU tail menggunakan inotify , jadi lebih efisien.

less juga menyimpan konten file dalam memori, jadi dengan file besar, seperti beberapa gigabytes, ini dapat memperlambat komputer Anda.

Jadi, apakah ada orang lain teknis alasan untuk menggunakan tail -flebih less +F?

cuonglm
sumber

Jawaban:

37

Saya pikir Anda telah membahas poin utama: less +Fmembaca seluruh file, sedangkan pada banyak sistem tail -fhanya membaca akhir file, dan bahkan pada sistem di mana ia membaca seluruh file, setidaknya tidak menyimpan seluruh file dalam kenangan. Itu membuat less +Ftidak praktis untuk file yang sangat besar. Namun, Anda dapat menjalankan less -n +F, yang menyebabkan lesshanya membaca akhir file, dengan biaya tidak menampilkan nomor baris.

Di bawah tenda, di antara less -n +Fdan tail -f, perbedaan utama adalah yang tailmenggunakan layanan pemberitahuan perubahan file pada beberapa platform (misalnya, inotify di Linux), yang memungkinkannya untuk menampilkan data baru secara instan, sedangkan lessmungkin memerlukan waktu hingga 1 detik untuk menampilkan data baru karena memeriksa data baru dalam satu lingkaran dan tidur di antara pemeriksaan.

Perbedaan lain antara less +Fdan tail -fadalah yang lessakan mengaktifkan filter inputnya, tetapi itu biasanya tidak akan berdampak pada file log.

Perbedaan teknis yang mendukung less +Fadalah bahwa Anda dapat membuatnya memotong garis pada lebar layar dengan -Sopsi, sedangkan tailmemberi Anda tidak ada pilihan selain untuk menampilkan seluruh baris tidak peduli berapa lama itu.

Dari segi antarmuka, tidak ada banyak manfaat untuk digunakan less. tail -fberguna untuk memperhatikan ketika sesuatu terjadi. Anda bahkan dapat menjalankannya di latar belakang. Jika sesuatu terjadi dan Anda ingin melihat file lebih terinci, Anda dapat membukanya lessdi terminal lain.

Jika Anda ingin menonton banyak file, multitail adalah caranya. Bahkan untuk satu file, multitail memiliki fitur bagus tambahan seperti pemfilteran dan pewarnaan.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Dengan file yang sangat besar, apakah 'less -n 99.99p + F' mencegah kurang membaca seluruh file?
cuonglm
1
@cuonglm Ah, benar, benar. Cukup less -nsudah, itu membuat kurang menggunakan strategi mencari-to-end-kemudian-baca-kembali.
Gilles 'SANGAT berhenti menjadi jahat'