buat ekor menunggu file ada

25

tail -f bar/somefile.logakan langsung gagal ketika somefile.log tidak ada. Bagaimana cara saya membuat ekor tanpa batas menunggu file itu dibuat (yang akan terjadi dalam beberapa saat)?

Pembaruan: menggunakan -F, saya melihat:

tail: cannot open `bar/somefile.log' for reading: No such file or directory
tail: cannot watch parent directory of `bar/somefile.log': No such file or directory

karena barbelum ada (itu akan dibuat dalam beberapa saat). ketika bardiciptakan, dan somefile.logdisentuh, ekor tidak menerima perubahan sama sekali.

Srid mengatakan Reinstate Monica
sumber

Jawaban:

28

Ini bekerja:

while ! tail -f bar/somefile.log ; do sleep 1 ; done
cYrus
sumber
inilah yang akhirnya bekerja untuk saya (untuk kasus direktori orang tua yang hilang).
Srid berkata Reinstate Monica
Apakah ini akan berfungsi untuk Mac?
mCeviker
31

Anda tidak menyebutkan OS mana yang Anda butuhkan, tetapi taildi linux memiliki opsi --retry dan --follow yang akan melakukan hal itu;

tail --retry --follow=name somefile.log
Joachim Isaksson
sumber
6
terima kasih, atau tail -F somefile.log. tetapi kemudian, ekor gagal karena alasan yang berbeda (saya telah memperbarui pertanyaan saya)
Srid mengatakan Reinstate Monica
6

Buat file lebih dulu:

touch somefile ; tail -f somefile
psusi
sumber
Solusi logis elegan yang bagus.
CarComp