faire la queue attendre qu'un fichier existe

23

tail -f bar/somefile.log échouerait immédiatement quand somefile.log n’existerait pas. Comment puis-je faire la queue indéfiniment attendre ce fichier à créer (ce qui va se passer dans quelques instants)?

Mise à jour: en utilisant -F, Je vois:

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

parce que bar n'existe pas encore (il sera créé dans quelques instants). quand bar a été créé, et somefile.log a été touché, la queue n’a pas du tout pris en compte les changements.

Sridhar Ratnakumar
la source

Réponses:

26

Cela marche:

while ! tail -f bar/somefile.log ; do sleep 1 ; done
cYrus
la source
c'est finalement ce qui a fonctionné pour moi (pour les cas de répertoire parent manquants).
Sridhar Ratnakumar
Est-ce que cela fonctionnera pour Mac?
mCeviker
28

Vous ne mentionnez pas le système d'exploitation pour lequel vous en avez besoin, mais tail sur linux a les options --retry et --ollow qui feront exactement cela;

tail --retry --follow=name somefile.log
Joachim Isaksson
la source
5
merci ou tail -F somefile.log. mais alors, la queue échoue pour une raison différente (j'ai mis à jour ma question)
Sridhar Ratnakumar
5

Créez d'abord le fichier:

touch somefile ; tail -f somefile
psusi
la source