Anda menggambarkan tail
utilitas GNU . Perbedaan antara kedua flag ini adalah jika saya membuka file, file log misalnya, seperti ini:
$ tail -f /var/log/messages
... dan jika fasilitas rotasi log pada mesin saya memutuskan untuk memutar file log itu ketika saya sedang menonton pesan yang ditulis padanya ("rotate" berarti menghapus atau pindah ke lokasi lain dll.), output yang saya lihat hanya akan berhenti.
Jika saya membuka file dengan tail
seperti ini:
$ tail -F /var/log/messages
... dan sekali lagi, file diputar, output akan terus mengalir di konsol saya karena tail
akan membuka kembali file segera setelah tersedia lagi, yaitu ketika program menulis ke log mulai menulis ke yang baru /var/log/messages
.
Pada sistem BSD gratis, tidak ada -F
pilihan, tetapi tail -f
akan berperilaku seperti tail -F
halnya pada sistem GNU, dengan perbedaan bahwa Anda mendapatkan pesan
tail: file has been replaced, reopening.
dalam output ketika file yang Anda pantau menghilang dan muncul kembali.
ANDA BISA MENGUJI INI
Dalam satu sesi shell, lakukan
$ cat >myfile
Itu sekarang akan menunggu Anda untuk mengetik. Silakan saja dan ketik beberapa omong kosong, beberapa baris. Itu semua akan disimpan ke dalam file myfile
.
Di sesi shell lain (mungkin di terminal lain, tanpa mengganggucat
):
$ tail -f myfile
Ini akan menampilkan (akhir dari) konten myfile
di konsol. Jika Anda kembali ke sesi shell pertama dan mengetik sesuatu yang lebih, output yang akan segera ditampilkan tail
di sesi shell kedua.
Sekarang berhenti cat
dengan menekan Ctrl+D, dan menghapus yang myfile
berkas:
$ rm myfile
Kemudian jalankan kucing lagi:
$ cat >myfile
... dan ketik sesuatu, beberapa baris.
Dengan GNU tail
, baris-baris ini tidak akan muncul di sesi shell kedua (di mana tail -f
masih berjalan).
Ulangi latihan dengan tail -F
dan amati perbedaannya.
tail -f foo.log
dan sistem Anda bergerakfoo.log
ke misalnyafoo.log.0.gz
output yang Anda lihat hanya akan berhenti. Jika Anda menggunakan-F
di sisi lain, Anda akan melihat konten barufoo.log
tanpa jeda di antara keduanya.Sederhana, ketika Anda membuka file, Anda akan mendapatkan inode yang berisi beberapa metadata di mana tepatnya file tersebut berada di disk Anda. Tail kemudian akan mendengarkan perubahan pada file itu.
Jika Anda menghapus file, dan membuat yang baru dengan nama yang sama nama file akan sama tetapi inode yang berbeda (dan mungkin disimpan di tempat yang berbeda pada disk Anda).
tail -f
isi tidak coba lagi dan muat inode baru,tail -F
akan mendeteksi ini.Efek yang sama akan terjadi jika Anda mengganti nama / memindahkan file. Jika Anda misalnya mengikuti
/var/log/messages
dan logrotate memutar log/var/log/messages.1
. ekor dengan-f
masih akan mendengarkan inode lama yang menunjukmessages.1
. ekor dengan-F
akan menyadari ini dan membaca inode baru.sumber