Приложение 1. Пример фильтра трассировки
Программа gawk.с выполняет разбивку потока трассировочной информации на отдельные файлы с последующим их архивированием.
BEGIN { Sum = 0; File="server.log"; SizeLimit = 1000000; MaxFilesCount = 10; Index = 0; FirstFileIndex = 0; system("ls " File ".*.bz2 > /tmp/hotres_log_list"); for(;;) { Tmp = ""; getline Tmp < "/tmp/hotres_log_list"; Files[Index] = Tmp; print "Files[" Index"]=" Tmp; if ( Tmp == "" ) { break; } Index++; }; system("rm -f /tmp/hotres_log_list"); while ( Index - FirstFileIndex > MaxFilesCount) { print "Delete " Files[FirstFileIndex]; system("rm -f " Files[FirstFileIndex]); delete Files[FirstFileIndex]; FirstFileIndex++; } } #/Set timer 9 for/ { next; } #/TIMEOUT EVENT Id=9/ {next;} #/State MAIN has been written/ { next;} #/Timeout 9 is ready/ {next;} { Sum = length($0) + Sum; print $0 > > ""File; if ( Sum > SizeLimit ) { Sum = 0; close (File); FileName = File"."strftime("%y%m%d%H%M%S") Index; system("mv -f "File" "FileName); system("bzip2 "FileName); Files[Index] = FileName ".bz2"; print "Index=" Index; while ( Index - FirstFileIndex >= MaxFilesCount) { print "Delete " Files[FirstFileIndex]; system("rm -f " Files[FirstFileIndex]); delete Files[FirstFileIndex]; FirstFileIndex++; } Index++; } }