hacer que la cola espere a que exista un archivo

25

tail -f bar/somefile.logfallaría inmediatamente cuando somefile.log no existe. ¿Cómo hago que la cola espere indefinidamente a que se cree ese archivo (que sucederá en unos momentos)?

Actualización: usando -F, veo:

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 bartodavía no existe (se creará en unos momentos). cuando barse creó y somefile.logse tocó, la cola no detectó los cambios en absoluto.

Srid dice reinstalar a Mónica
fuente

Respuestas:

28

Esto funciona:

while ! tail -f bar/somefile.log ; do sleep 1 ; done
Ciro
fuente
Esto es lo que finalmente funcionó para mí (para los casos de directorio padre que faltan).
Srid dice reinstalar a Mónica
¿Funcionará para Mac?
mCeviker
31

No está mencionando para qué sistema operativo lo necesita, pero tailen Linux tiene las opciones --retry y --follow que harán exactamente eso;

tail --retry --follow=name somefile.log
Joachim Isaksson
fuente
66
gracias o tail -F somefile.log. pero luego, la cola falla por una razón diferente (he actualizado mi pregunta)
Srid dice Reinstate Monica
6

Cree el archivo primero:

touch somefile ; tail -f somefile
psusi
fuente
Buena solución lógica elegante.
CarComp