Приложение 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++;
  }
}