Назад | Перейти на главную страницу

Повторно открыть усеченный файл, следуя за файлом с меньшим

Иногда я запускаю less +F в файле журнала, который я затем обрезаю. Я хотел бы less чтобы понять, что файл был усечен, и начать следить за файлом, как сейчас. В настоящее время я вынужден сделать следующее:

  1. (терминал 1)> less +F my-file.txt
  2. (терминал 2)> printf "" > my-file.txt
  3. (терминал 1)> бросить меньше
  4. (терминал 1)> перезагружать меньше: less +F my-file.txt

И мне нужно сделать шаги 3-4 каждый раз что я усекаю файл (который десятки о раз в сутки). Это действительно больно.

Я бы хотел сделать:

  1. (терминал 1)> less +F my-file.txt (и любые дополнительные опции)
  2. (терминал 2)> printf "" > my-file.txt

И это все. less автоматически узнает, что файл был усечен, и начнет следовать за новым файлом с самого начала.

Это возможно? Какой флаг я должен использовать для меньшего, чтобы достичь этого?

Не совсем тот ответ, который вы искали, но вы можете попробовать использовать "хвост -F'(В отличие от'хвост -f'), который даст вам именно то поведение, которое вы ищете.

Почему бы вам так их не совместить?

tail -F filename | tee | less

У меня это хорошо работает.

Вы хотите указать --follow-name аргумент less. Из страница руководства:

Обычно, если входной файл переименовывается во время выполнения команды F, less будет продолжать отображать содержимое исходного файла, несмотря на изменение его имени. Если указано --follow-name, во время выполнения команды F less будет периодически пытаться повторно открыть файл по имени. Если повторное открытие завершится успешно и файл отличается от исходного (что означает, что был создан новый файл с тем же именем, что и исходный (теперь переименованный) файл), less отобразит содержимое этого нового файла.

Итак, теперь ваши шаги будут такими:

  1. (терминал 1)> less --follow-name +F my-file.txt
  2. (терминал 2)> printf "" > my-file.txt
  3. (терминал 1)> наслаждайтесь!

P.S. Вместо использования printf многие оболочки будут обрезаться только с помощью оператора перенаправления: > my-file.txt