объединение хвоста -f с меньшим + F не работает

650
Tom Bennett

Я использую Ubuntu Bash. Я пытаюсь объединить tail -f и less + F, как показано ниже, и ничего не выходит.

tail -f long_running_log | less +F 

long_running_log - это файл журнала, который постоянно записывается другим процессом. Следующая строка покажет на консоли кучу вещей: tail -f long_running_log Но как только я объединю это с less + F с каналом, ничего не выйдет.

В случае, если вам интересно, почему я это делаю, это потому, что я хочу отфильтровать результаты tail на этом пути. Настоящая команда выглядит так: tail -f long_running_log | фильтр1 | фильтр2 | меньше + F

В целях отладки я удалил filter1 и filter2 посередине, но у меня все еще есть проблемы.

1

1 ответ на вопрос

0
Dan Cornilescu

Из меньшей страницы руководства:

 F Scroll forward, and keep trying to read when the end of file is reached. Normally this com- mand would be used when already at the end of the file. It is a way to monitor the tail of a file which is growing while it is being viewed. (The behavior is similar to the "tail -f" command.) 

Проблема в том, что пока конвейер все еще работает (т. Е. Работает хвост ), вы не получите EOF. Вы можете проверить это с помощью Ctrl-C, который убивает конвейер - затем отображается отфильтрованный вывод.

Вы можете либо полностью отбросить трубопровод до «less + F» (вы получите отфильтрованный вывод, последовательно отображаемый в терминале), либо перенаправить отфильтрованный вывод в другой файл, который вы затем можете отслеживать, используя «less + F that_log_file» .

Тогда почему можно сделать меньше + F long_running_log_file и показать последние части файла журнала точно так же, как tail -f, но с большим количеством функций? Tom Bennett 8 лет назад 0
Поскольку long_running_log_file является «реальным» файлом и, следовательно, EOF доступен в любой момент для функции «less + F». Dan Cornilescu 8 лет назад 0
Вы увидите тот же эффект, если передадите на `less` (без` + F`) и нажмете клавишу ** End **. Обе команды приостанавливаются при поиске конца файла, который не достигается, пока канал не будет закрыт. Команда `p` ведет себя аналогично, но она говорит вам, что она делает, и предлагает вам прервать ее. AFH 8 лет назад 0

Похожие вопросы