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.

Réponses:


26

Cela marche:

while ! tail -f bar/somefile.log ; do sleep 1 ; done

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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.