Иногда я запускаю less +F
в файле журнала, который я затем обрезаю. Я хотел бы less
чтобы понять, что файл был усечен, и начать следить за файлом, как сейчас. В настоящее время я вынужден сделать следующее:
less +F my-file.txt
printf "" > my-file.txt
less +F my-file.txt
И мне нужно сделать шаги 3-4 каждый раз что я усекаю файл (который десятки о раз в сутки). Это действительно больно.
Я бы хотел сделать:
less +F my-file.txt
(и любые дополнительные опции)printf "" > my-file.txt
И это все. less
автоматически узнает, что файл был усечен, и начнет следовать за новым файлом с самого начала.
Это возможно? Какой флаг я должен использовать для меньшего, чтобы достичь этого?
Не совсем тот ответ, который вы искали, но вы можете попробовать использовать "хвост -F'(В отличие от'хвост -f'), который даст вам именно то поведение, которое вы ищете.
Почему бы вам так их не совместить?
tail -F filename | tee | less
У меня это хорошо работает.
Вы хотите указать --follow-name
аргумент less
. Из страница руководства:
Обычно, если входной файл переименовывается во время выполнения команды F, less будет продолжать отображать содержимое исходного файла, несмотря на изменение его имени. Если указано --follow-name, во время выполнения команды F less будет периодически пытаться повторно открыть файл по имени. Если повторное открытие завершится успешно и файл отличается от исходного (что означает, что был создан новый файл с тем же именем, что и исходный (теперь переименованный) файл), less отобразит содержимое этого нового файла.
Итак, теперь ваши шаги будут такими:
less --follow-name +F my-file.txt
printf "" > my-file.txt
P.S. Вместо использования printf многие оболочки будут обрезаться только с помощью оператора перенаправления: > my-file.txt