Saya baru-baru melihat ke menggunakan tail -f
untuk 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/text
Lalu, saya membuka log in vim dan melakukan beberapa pengeditan, menyimpannya, dan sepertinya tail tidak "melihat" perubahan.
Yang aneh adalah, berlari echo "hello" >> /home/name/text
tampaknya 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.
sumber
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
Sebenarnya, kisah nyata adalah:
tail -f memonitor memori, bukan disk. Tapi itu tidak dapat mengakses memori yang dilindungi, seperti mengedit file membuka editor teks.
sumber
tail -f
perintah beroperasi pada file (file descriptor setelah membuka file). Meskipun sebenarnya modifikasi baru dari file tersebut masih dalam memori (buffer, cache) tidak masalah.tail
masih mengakses file melalui deskriptor file. Tidak masalah bagaimana file diubah. --- Jawaban oleh Ignacio Vazquez-Abrams benar - editor tidak mengubah file saat ini (yang dibuka ditail
), itu menyimpan perubahan ke file baru dengan nama yang sama dengan yang lama.