tail -f tidak melacak perubahan file

14

Saya baru-baru melihat ke menggunakan tail -funtuk memantau beberapa file teks seperti: tail -f /var/sometext.

Namun, ketika saya melakukan beberapa pengujian, sepertinya tidak berhasil. Apa yang saya lakukan adalah saya membuat file baru dan berlari: tail -f /home/name/textLalu, saya membuka log in vim dan melakukan beberapa pengeditan, menyimpannya, dan sepertinya tail tidak "melihat" perubahan.

Yang aneh adalah, berlari echo "hello" >> /home/name/texttampaknya bekerja dengan baik (ekor melihat perubahannya). Saya membaca di suatu tempat ini ada hubungannya dengan deskriptor file dan inode baru yang dibuat saat menyimpan file.

Bisakah seseorang menjelaskan ini untuk saya? Saya tidak mengerti bagaimana ini sebenarnya bekerja, tapi saya punya ide apa deskriptor file.

Alex.K.
sumber

Jawaban:

29

-fdiikuti oleh inode. Jika Anda ingin mengikuti dengan nama, seperti ketika sebuah program membuat ulang file sepenuhnya, kemudian gunakan -F.

Ignacio Vazquez-Abrams
sumber
Rapi, saya tidak pernah tahu itu. Membayar untuk membaca halaman utilitas bahkan (terutama?) Jika Anda menggunakannya sepanjang waktu!
Lyle
1

tail -f mengawasi akhir file, dan ketika akhir file bergerak, ia mencetak konten baru dan menunggu akhir file untuk bergerak lagi. Dengan kata lain, perubahan di tengah dokumen tidak akan ditemukan oleh tail -f, hanya menambahkan.


sumber
-1

Sebenarnya, kisah nyata adalah:

tail -f memonitor memori, bukan disk. Tapi itu tidak dapat mengakses memori yang dilindungi, seperti mengedit file membuka editor teks.

fragileswan
sumber
The tail -fperintah beroperasi pada file (file descriptor setelah membuka file). Meskipun sebenarnya modifikasi baru dari file tersebut masih dalam memori (buffer, cache) tidak masalah. tailmasih mengakses file melalui deskriptor file. Tidak masalah bagaimana file diubah. --- Jawaban oleh Ignacio Vazquez-Abrams benar - editor tidak mengubah file saat ini (yang dibuka di tail), itu menyimpan perubahan ke file baru dengan nama yang sama dengan yang lama.
pabouk