fazer a cauda aguardar a existência de um arquivo

25

tail -f bar/somefile.logfalharia imediatamente quando somefile.log não existir. Como faço para a cauda esperar indefinidamente que o arquivo seja criado (o que acontecerá em alguns instantes)?

Atualização: usando -F, eu vejo:

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

porque barainda não existe (será criado em alguns instantes). Quando barfoi criado e somefile.logtocado, o rabo não captou as alterações.

Srid diz Restabelecer Monica
fonte

Respostas:

28

Isso funciona:

while ! tail -f bar/somefile.log ; do sleep 1 ; done
cYrus
fonte
isso é o que finalmente funcionou para mim (por casos de diretório pai ausentes).
Srid diz Restabelecer Monica
Isso funcionará para o Mac?
MCeviker
31

Você não está mencionando para qual sistema operacional precisa, mas tailno linux há as opções --retry e --follow que farão exatamente isso;

tail --retry --follow=name somefile.log
Joachim Isaksson
fonte
6
obrigado ou tail -F somefile.log. mas, em seguida, a cauda falha por um motivo diferente (atualizei minha pergunta)
Srid diz Reinstate Monica
6

Crie o arquivo primeiro:

touch somefile ; tail -f somefile
psusi
fonte
Solução lógica elegante e agradável.
CarComp 12/06