Я долго искал и обнаружил, что вы не можете направить вывод syslog как в буфер, так и в файл через syslog-startup.conf в / etc.Пожалуйста, посмотрите это: https://unix.stackexchange.com/questions/449156/how-to-set-up-syslog-to-log-to-both-file-buffer
Мое решение состояло в том, чтобы иметь задачу cron, запускающую скрипт bash, который будет запускаться каждые пару минут, чтобы захватить журналы из буфера и сохранить их в файл на моем встроенном устройстве Linux.,Подход заключается в том, что я получаю первый набор журналов из буфера, выполняя что-то вроде logread >> my_log_file
, а затем я беру последнюю запись из my_log_file, получаю из нее метку времени, а затем использую ее для получения новых журналов, которые имеют метку времени больше, чемthis timestamp.
Я сталкиваюсь с проблемой, пытающейся подключить timstamp к команде awk
if [ -f "${VAR_FILE}" ]; then
LASTTS=$(tail -n 1 "${VAR_FILE}" | grep -o '^.*swi-')
LASTTS=$(sed 's/.\{5\}$//' <<< "$LASTTS")
echo $LASTTS
fi
awk '$0 > "${LASTTS}"' msgs >> "${VAR_FILE}"
Я продолжаю получать все журналы, а не те, что> моя последняя отметка времени.Это работает, если я изменяю команду awk, чтобы фактическая дата была жестко запрограммирована как таковая
awk '$0 > "Mar 15 14:20:50"' msgs >> "${VAR_FILE}"
Что я делаю неправильно?