1

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

tail -f long_running_log | less +F

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

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

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

1 ответ1

0

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

   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».

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .