хвіст - якщо не відстежувати зміни файлу


14

Я недавно був дивлячись у використанні tail -fдля моніторингу деяких текстових файлів , як так: tail -f /var/sometext.

Однак, коли я робив тестування, це, здається, не працює. Що я зробив, я створив новий файл і побіг: tail -f /home/name/textПотім я відкрив журнал in vim і зробив деяке редагування, зберег його, і, здається, хвіст не "бачить" зміни.

Дивна річ, що біг, echo "hello" >> /home/name/textздається, працює добре (хвіст бачить зміни). Я десь читав, що це має щось спільне з дескрипторами файлів та новими вводами, що створюються під час збереження файлу.

Хтось може мені це пояснити? Я не зовсім зрозумів, як це насправді працює, але я маю уявлення, що таке дескриптори файлів.

Відповіді:


30

-fдалі по inode. Якщо ви хочете керуватися назвою, наприклад, коли програма повністю відтворила файл, тоді використовуйте -Fзамість цього.


Акуратний, я цього ніколи не знав. Слід читати навіть утиліти комунальних служб (особливо?), Якщо ви користуєтесь ними постійно!
Лайл

1

хвіст -f дивиться кінець файлу, і коли кінець файлу переміщується, він друкує новий вміст і чекає, коли кінець файлу знову переміститься. Іншими словами, зміни в середині документа не знайдуться хвостом -f, а лише додаються.


-1

Насправді правдива історія така:

хвіст -f моніторить пам’ять, а не диск. Але він не може отримати доступ до захищеної пам'яті, наприклад редагування файлу, відкритого текстовим редактором.


tail -fКоманда працює на файл (дескриптор файлу після відкриття файлу). Хоча насправді нові модифікації файлу все ще зберігаються в пам'яті (буфери, кеш), це не має значення. tailяк і раніше доступ до файлу через дескриптор файлу. Не має значення, як файл модифікований. --- Відповідь Ігнасіо Васкеса-Абрамса правильна - редактор не змінює поточний файл (який відкрито в tail), він зберігає зміни до нового файлу з тим же ім'ям, що і старий.
pabouk
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.