tail-f не отслеживает изменения файлов

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

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

28
задан Ignacio Vazquez-Abrams
21.04.2023 5:37 Количество просмотров материала 3524
Распечатать страницу

3 ответа

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

26
отвечен Ignacio Vazquez-Abrams 2023-04-22 13:25

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

1
отвечен 2023-04-22 15:42

на самом деле, истинная история-это:

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

0
отвечен fragileswan 2023-04-22 17:59

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх