CentOS 4.x
Заранее прошу прощения, если это не подходящее место, чтобы задать этот вопрос. Это относится к задаче администратора linux / ИТ-администратора.
У меня есть файл журнала на старом сервере CentOS 4.x, и я хочу удалить записи журнала старше определенной даты и поместить их в новый файл для архива.
Вот пример формата журнала:
2012-06-07 22:32:01,289 ABC:0|Foo|Foo2|4.4|1234|Some Event|123|blah blah blah
2012-06-07 22:32:03,289 ABC:0|Foo|Foo2|4.4|1234|Some Event|123|blah blah blah
2012-06-07 22:32:04,289 ABC:0|Foo|Foo2|4.4|1234|Some Event|123|
2012-06-07 22:32:10,289 ABC:0|Foo|Foo2|4.4|1234|Some Event|123|blah blah blah
2012-06-07 22:32:12,289 ABC:0|Foo|Foo2|4.4|1234|Some Event|123|blah blah blah
2012-06-07 22:32:15,289 ABC:0|Foo|Foo2|4.4|1234|Some Event|123|
2012-06-07 22:32:40,289 ABC:0|Foo|Foo2|4.4|1234|Some Event|123|blah blah blah
2012-06-07 22:32:58,289 ABC:0|Foo|Foo2|4.4|1234|Some Event|123|blah blah blah
2012-06-07 22:33:01,289 ABC:0|Foo|Foo2|4.4|1234|Some Event|123|
2012-06-07 22:33:01,289 ABC:0|Foo|Foo2|4.4|1234|Some Event|123|blah blah blah
2012-06-07 22:33:02,289 ABC:0|Foo|Foo2|4.4|1234|Some Event|123|
По сути, я ищу однострочник, который будет делать следующее:
Я знаю, что существуют инструменты для ротации журналов, которые делают это, но это должно быть разовое задание, поэтому я бы предпочел не настраивать его.
Дополнительные замечания:
tail -n 10000 > newfile.txt
но это означало бы перемещение «хороших» журналов в новый файл и затем выполнение обмена именами ... и тогда мне все равно нужно было бы удалить «хорошие» записи из архива. Что-нибудь простое может сработать для вас.
Предполагая, что записи журнала находятся в одной строке, а строки всегда начинаются с YYYY-MM-DD
то простой сценарий, подобный этому, разделит файл журнала по дате.
logsplit: использование cat logfile | logsplit
#!/bin/bash
LOGBASEPATH=/logfilepath/logfile
while read LOGLINE ; do
[[ -z ${LOGLINE} ]] && continue # skip empty
dayprefix=`echo $LOGLINE | cut -d ' ' -f 1`
echo $LOGLINE > $LOGBASEPATH/logname.$dayprefix
done
Это хорошо сочетается с dateext
опция logrotate, чтобы вы могли иметь один файл журнала в день.