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