12

Недавно я изучал использование tail -f для мониторинга некоторых текстовых файлов, например так: tail -f /var/sometext Однако, когда я провел некоторое тестирование, это не сработало. Я создал новый файл и запустил: tail -f /home/name/text Затем я открыл журнал в vim, отредактировал, сохранил его, и кажется, что tail не "видит" изменения.

Странно то, что запуск echo "hello" >> /home/name/text кажется, работает нормально (tail видит изменения). Я где-то читал, что это как-то связано с дескрипторами файлов и созданием новых inode при сохранении файла. Может кто-нибудь объяснить это для меня? Я не совсем понял, как это на самом деле работает, но у меня есть представление о дескрипторах файлов. Спасибо!

3 ответа3

29

-f следует за индексом. Если вы хотите следовать по имени, например, когда программа полностью воссоздает файл, используйте вместо этого -F .

1

tail -f наблюдает за концом файла, и когда конец файла перемещается, он печатает новое содержимое и ждет, пока конец файла не переместится снова. Другими словами, изменения в середине документа не будут найдены командой tail -f, только добавлением.

-1

На самом деле правдивая история такова:

tail -f контролирует память, а не диск. Но он не может получить доступ к защищенной памяти, такой как редактирование файла, открытого текстовым редактором.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .