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


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.