заставить хвост ждать, пока файл будет существовать


25

tail -f bar/somefile.logнемедленно потерпит неудачу, если файл somefile.log не существует. Как заставить хвост неопределенно долго ждать создания этого файла (что произойдет через несколько минут)?

Обновление: используя -F, я вижу:

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

потому что barеще не существует (он будет создан через несколько минут). когда barбыл создан и somefile.logтронут, хвост вообще не уловил изменений.

Ответы:


28

Это работает:

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

это то, что наконец-то сработало для меня (за отсутствующими родительскими каталогами).
Шридхар Ратнакумар

Будет ли это работать для Mac?
mCeviker

31

Вы не упоминаете, для какой ОС вам это нужно, но tailв linux есть опции --retry и --follow, которые это сделают;

tail --retry --follow=name somefile.log

6
спасибо, или tail -F somefile.log. но потом, хвост перестает
работать

6

Сначала создайте файл:

touch somefile ; tail -f somefile

Хорошее элегантное логическое решение.
CarComp
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.