// Java-программисты, когда я имею в виду метод, я имею в виду «способ делать вещи» ...
Привет всем,
Я пишу скрипт для анализа различных файлов журналов в моей компании. Он написан на Perl, хотя у меня есть доступ к Python и, если мне ДЕЙСТВИТЕЛЬНО, C, (хотя моя компания не любит двоичные файлы). Он должен быть в состоянии пройти через последние 24 часа, взять код журнала и проверить его, если мы должны игнорировать или отправить по электронной почте соответствующим людям (мне). Сценарий будет выполняться как задание cron на серверах Solaris. Теперь вот что я имел в виду (это всего лишь псевдо-иш ... и плохо написанное песо)
main()
{
$today = Get_Current_Date();
$yesterday = Subtract_One_Day($today);
`grep $yesterday '/path/to/log' > /tmp/log` # Get logs from previous day
`awk '{print $X}' > /tmp/log_codes`; # Get Log Code
SubRoutine_to_Compare_Log_Codes('/tmp/log_codes');
}
Еще одна мысль состояла в том, чтобы загрузить файл журнала в память и прочитать его там ... все нормально и прекрасно, за исключением двух небольших проблем.
- Эти серверы являются производственными и обслуживают пару миллионов клиентов ...
- Файлы журналов в среднем имеют размер 3,3 ГБ (это журналы в течение примерно двух дней)
Таким образом, grep не только потребует некоторое время для просмотра каждого файла, но и из-за использования ЦП и памяти в процессе, который необходимо использовать в другом месте. И загрузка в память файла 3.3 ГБ - не самая мудрая идея. (Хотя бы ИМХО). Теперь у меня появилась сумасшедшая идея, связанная с ассемблерным кодом и областями памяти, но я не знаю, что SPARC-сборка ооочень сбрасывает эту идею.
У кого-нибудь есть предложения?
Спасибо, что прочитали это далеко =)