Менее ли есть такая функция, как tail --follow = name (-F)

41

Команду lessможно использовать для замены tailв

tail -f file

чтобы обеспечить такие функции, как обработка двоичного вывода и навигация по прокрутке:

less +F file

На +средства префикс «вид , что тип , который после запуска», а ключ Fначинается следующий.

Но lessтакже может заменить

tail --follow=name file

что происходит, fileдаже если фактический файл удаляется или удаляется, как файл журнала, в который перемещается file.log.1, а затем создается новый файл с тем же именем, что и следующий файл?

Volker Siegel
источник
1
Вы можете попробовать с less --follow-nameилиless --follow-name +F
don_crissti
@don_crissti Хорошо ... less --follow-name +Fэто - не знаю, как я пропустил это - я был почти уверен, что искал страницу справочника follow... странно. Сделай ответ!
Фолькер Сигел
Ну, еще несколько поиск показывает , что это уже было предложено и ответил здесь , так что я оставлю его в качестве комментария. Вы всегда можете подтвердить ответ там.
don_crissti
@don_crissti Правильно ... за исключением того, что ваш правильный ответ там не найден - --follow-nameописан, но +Fникогда не упоминается, и я думаю, что это довольно важно, потому что он не широко известен, очевидно.
Фолькер Сигел
Если вы пришли сюда из-за поиска в Google less follow, ПРОЧИТАЙТЕ ВОПРОС. Он уже отвечает, как внести lessизменения в файл!
Юбер Гжесковяк

Ответы:

40

Да, lessможет следовать по имени файла

Функция имеет довольно неясный синтаксис:

less --follow-name +F file.log

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

Кроме того, нет нормального варианта запуска lessв режиме слежения.
Но вы можете использовать командную строку, чтобы назначать нажатия клавиш после запуска, добавляя к ним префикс +.
Объединение опции модификатора с +F, lessфактически запустится в (измененном) режиме следования.

Используйте +Fотдельно для эквивалента равнины tail -f:

less +F file.log
Volker Siegel
источник
Я подозреваю, что если вы будете следовать за бесконечным потоком с меньшими затратами, это в конечном итоге истощит вашу память, потому что в отличие от tail -f, объем используемой памяти не ограничен пределом обратной прокрутки терминала (если только предел обратной прокрутки терминала также не бесконечен). less + F должен сохранять всю историю прокрутки и не может полагаться на перезагрузку фрагментов из файла на жестком диске.
CMCDragonkai
@CMCDragonkai Интересный момент. lessимеет опции для контроля размера буфера, используемого для файла ( -bи -B), для меня не очевидно, ограничен ли размер по умолчанию.
Volker Siegel
В справочной странице -Bговорится, что «по умолчанию, когда данные читаются из канала, буферы распределяются автоматически по мере необходимости. Если из канала читается большой объем данных, это может привести к выделению большого объема памяти. Опция -B отключает это автоматическое распределение буферов для каналов, так что для канала используется только 64 К (или объем пространства, указанный в параметре -b). ". Таким образом, это означает, что при чтении из бесконечного канала по умолчанию выделяется бесконечная память, но если чтение из файла, такого как файл журнала, то по умолчанию используется 64 тыс. Срезов.
CMCDragonkai
4

В Fedora, по крайней мере, меньше есть опция + F, которая следует за содержимым файла так же, как tail -f.

Обновление, попробуйте нажать F меньше, чтобы перейти в режим следования, а также

user1529413
источник
Вы уверены? Мои менее имеет противоречивый вариант с таким же именем, -F: Человек страница меньше говорит: -F or --quit-if-one-screen. Какая версия lessу вас есть? Мой говорит less 458с опцией -V.
Фолькер Сигел
Очень интересно, спасибо за ссылку! Это, кажется, не гну меньше. Полная первая линия less -Vесть less 458 (GNU regular expressions). Пожалуйста, дайте мне вашу версию.
Фолькер Сигел
Да, я уверен, но давай, голосуй за меня, stackexchange должен поделиться любовью
user1529413
1
Просто чтобы быть уверенным, что ты считаешь, что я за тебя проголосовал: нет, я за тебя проголосовал.
Фолькер Сигел