Просмотр только новых записей в растущем файле журнала

20
tail -f x.log

Я использую эту команду, чтобы увидеть растущий файл журнала в командной строке.

Меня интересует только просмотр строк журнала, которые записываются в файл после запуска, tail -fи не интересуются журналами, которые были записаны в файл перед выполнением tail -f. Но tail -fкоманда при запуске берет последние 10 строк и отображает их.

Это смущает меня, иногда, если эти журналы только что сгенерированы (или) они старые журналы?

Итак, как мне настроить tail -f для вывода только новых записей?


источник

Ответы:

31

Можешь попробовать:

tail -n0 -f x.log

С man-страницы :

-n, --lines = K
выводит последние K строк вместо последних 10; или используйте -n + K для вывода строк, начинающихся с Kth

taliezin
источник
12

Вы можете использовать -n0опцию, чтобы показать 0 строк. Так

tail -n0 -f some.log
fredtantini
источник
2

Вы также можете использовать lessкоманду, как

  1. less file_name.log (файл журнала будет открыт и покажет первую страницу файла журнала)
  2. нажмите shift+ f(чтобы действовать так же, как tail -f)
  3. В случае, если вам нужно найти любое ключевое слово в файле журнала. нажмите ctrl+, cчтобы выйти из хвостового режима и найти ключевое слово в качестве /ключевого слова и ?ключевого слова.
Рагу Ратиш
источник
При этом не отображаются только новые записи в растущем файле журнала.
жуткий
0

Я создал этот подход, когда мне нужно было отслеживать записи внутри контейнера Docker:

LOG_COUNT=0
LOGS=/var/logs/your_logs

function HEART_BEAT() {
    LOG_COUNT_NEW=$(wc -l $LOGS | awk '{ print $1 }')
    tail -n $(( $LOG_COUNT_NEW - $LOG_COUNT )) $LOGS
    LOG_COUNT=$LOG_COUNT_NEW
}

Надеюсь это поможет!

Number16BusShelter
источник