Saya menggunakan tail -f a.txt
untuk menonton pembaruan pada file bernama a.txt
.
Jika saya memperbarui file menggunakan sesuatu seperti ls -a >> a.txt
di konsol virtual kedua, perubahan akan ditampilkan secara real-time di yang pertama.
Jika saya memperbarui file menggunakan Vim di konsol virtual kedua, perubahan tidak akan ditampilkan di yang pertama.
Saya tidak selalu berharap untuk memicu pembaruan di jendela itu - tetapi mengapa sebenarnya ini tidak memperbarui terminal yang menjalankan tail -f
perintah?
tail -f
memeriksa penambahan.tail -F
memeriksa nama file.Jawaban:
Jika Anda mengedit file dengan
vim
, biasanya file itu membaca file ke dalam memori, kemudian menulis file baru. Jaditail
sekarang beroperasi pada salinan file yang kedaluwarsa (yang tetap berada dalam sistem file hinggatail
(dan program lainnya) berhenti menggunakannya.Anda dapat
tail
mengikuti nama file (bukan file) dengan menggunakan:Perhatikan huruf besar
F
.sumber
tail -F
bekerja! Konsol sekarang menampilkan pesan seperti "a.txt telah diganti: mengikuti akhir file baru" dan memperbarui sesuai. Terima kasih!Pemahaman saya adalah bahwa biasanya ketika mengedit dengan
vim
, Anda mengedit salinan file, yang dipindahkan ke tempatnya ketika Anda menulis perubahan Anda ke disk. Karena ini terjadi denganunlink
memasukkan yang asli danmove
yang baru ke tempatnya,tail
tidak melihat perubahan baru pada file asli.sumber