Как просматривать записи системного журнала с тех пор, как я в последний раз смотрел - PullRequest
0 голосов
/ 27 сентября 2019

Я хочу просмотреть записи в Linux / var / log / syslog, но я хочу видеть записи только с тех пор, как смотрел в прошлый раз (желательно для этого создайте скрипт bash).Решением, о котором я думал, было взять копию системного журнала и сравнить ее с последним разом, когда я взял копию, но это кажется нечистым, потому что системный журнал может быть большим, и diff добавляет артефакты в свой вывод.Я думаю, может быть, каким-то образом использовать tail непосредственно в системном журнале, но я не знаю, как это сделать, когда я не знаю, сколько строк было добавлено с момента последней попытки.Есть лучшие мысли?Я хотел бы иметь возможность перенаправить результат в файл, чтобы позже я мог в интерактивном режиме выполнить поиск определенных частей.

1 Ответ

0 голосов
/ 27 сентября 2019

В Linux есть команда wc, которая может подсчитать количество строк в файле, например
wc -l /var/log/syslog.Приведенный ниже скрипт bash сохраняет вывод команды wc -l в файле с именем ./prevlinecount.Всякий раз, когда вам нужны только новые строки в файле, он получает значение в ./prevlinecount и вычитает это значение из нового экземпляра wc -l /var/log/syslog, который называется newlinecount.Тогда это tail с (newlinecount - prevlinecount).

#!/bin/bash
prevlinecount=`cat ./prevlinecount`
if [ -z $prevlinecount ]; then
        echo `wc -l $1 | awk '{ print $1 }' > ./prevlinecount`
        tail -n +1 $1
else
        newlinecount=`wc -l $1 | awk '{print $1}'`
        tail -n `expr $newlinecount - $prevlinecount` $1
        echo $newlinecount > ./prevlinecount
fi

Остерегайтесь Это очень элементарный скрипт, который может отслеживать только один файл.Если вы хотите расширить этот сценарий на несколько файлов, посмотрите ассоциативные массивы .С помощью ассоциативных массивов вы можете отслеживать несколько файлов, указав key в качестве имени файла и value в качестве количества предыдущих строк.
остерегайтесь , что со временем syslog файлы могут быть заархивированы после того, как файл достигнет заранее определенного размера (возможно, 10 МБ), и этот сценарий не учитывает процесс архивирования.

...