Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: elvehe en 22 Abril 2015, 02:25 AM

Título: bash linux
Publicado por: elvehe en 22 Abril 2015, 02:25 AM
Mi problema es que el siguiente programa tarda demasiado en ejecutarse
En este programa busco la cantidad de macs x dia sin repetirse que han accesado al servidor.

¿Como podría optimizarlo?
el codigo es el siguiente
(creo que es lento por la cantidad de archivos que leo linea por linea)



Código (bash) [Seleccionar]
....
for dia in `ls /bitacora/graficas/salida.$horaConAno-$mes-* | cut -d"." -f2 | cut -d"-" -f3`
do  
` > archivoDeMacsDiferentes`
cantMacsDife=0
for hora in `ls /bitacora/graficas/salida.*_$ano-$mes-$dia | cut -d"." -f2 | cut -d"_" -f1`  
do
  archivoDeBitacora="/bitacora/graficas/salida."$hora"_"$ano"-"$mes"-"$dia

  while read line
  do    
      mac=`echo $line | cut -d" " -f2`        
     macEnArchivodifeDeMacs=`cat archivoDeMacsDiferentes | grep $mac`
          #echo $mac"="$macEnArchivodifeDeMacs "fecfa:"$hora
      if [ -z $macEnArchivodifeDeMacs ]; then #si no existe lo agrego
           cantMacsDife=`expr $cantMacsDife + 1 `
                `echo $mac>>archivoDeMacsDiferentes`
     fi
  done<$archivoDeBitacora
done
echo "dia:"$dia",TotalPcDiferentes:"$cantMacsDife
done


Mod: los Códigos deben ir en etiquetas GeSHi