печать с определенного времени во время журнала

Походит на универсальную ошибку, которую представитель поддержки мог бы дать для опечатки. Если бы вызвано для предположения я предположил бы, что кто-то обновил зональный файл, но забыл обновлять сериал, и новые детали не были загружены сервером.

1
задан 28 September 2011 в 20:17
1 ответ

Предполагается, что команда даты GNU (встречается в большинстве систем Linux) может принимать выражение даты:

  date --date='today-7 days 0000'   ;; print 7 days earlier than today at 0000

  date --date='26 Sep 2002 00:15:16 -5 hours'  ;; closer to your example

Это может немного упростить написание сценариев.

Таким образом, обработка будет : (1) получить дату начала и отформатировать ее (2) найти точку в файле и (3) распечатать. Это можно сделать разными способами, возможно, с помощью простого оператора sed в файле журнала.

РЕДАКТИРОВАТЬ ДОПОЛНЕНИЕ:

В частности, это должно работать: (не гарантируется полное тестирование, но работает!)

 #! /bin/sh
 set -uh

 filename=/var/log/apache2/access_log

 lastdate=`tail -1 $filename | sed 's/^.*\[//
 s/\].*$//
 s/ .*$//
 s/\// /g
 s/:/ /'`
 newdate=`date --date="$lastdate -5 hours" +"%d\/%b\/%Y:%H:"`
 awk '/'"$newdate"'/,/^$/    {print $0}' $filename

 exit 0
1
ответ дан 4 December 2019 в 01:23

Теги

Похожие вопросы