[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Tempo de execução de um script
From: |
Fabiano Caixeta Duarte |
Subject: |
Re: [shell-script] Tempo de execução de um script |
Date: |
Fri, 26 Sep 2008 10:48:21 -0300 |
2008/9/26 M. Rodrigo Monteiro <address@hidden>
> Senhores, bom dia.
>
> Tenho o seguinte script:
>
> #!/bin/bash
>
> log="${1}"
>
> while read line ; do
> date=$(echo "${line}" | awk '{print $1}' | cut -d'.' -f1 | perl
> -pe 's/\d+/localtime($&)/e')
> date=$(date -d "${date}" +"%F %T")
> duration=$(echo "${line}" | awk '{print $2}')
> clientAddress=$(echo "${line}" | awk '{print $3}')
> resultCode=$(echo "${line}" | awk '{print $4}')
> bytes=$(echo "${line}" | awk '{print $5}')
> requestMethod=$(echo "${line}" | awk '{print $6}')
> url=$(echo "${line}" | awk '{print $7}' | awk -F'http://' '{print $2}')
> rfc931=$(echo "${line}" | awk '{print $8}')
> hierarchyCode=$(echo "${line}" | awk '{print $9}')
> type=$(echo "${line}" | awk '{print $10}')
> echo "insert into squidReport (code, date, duration,
> clientAddress, resultCode, bytes, requestMethod, url, rfc931,
> hierarchyCode, type) values ('', \"${date}\", ${duration},
> INET_ATON('${clientAddress}'), \"${resultCode}\", ${bytes},
> \"${requestMethod}\", \"${url}\", \"${rfc931}\", \"${hierarchyCode}\",
> \"${type}\");"
> done < "${log}"
>
>
> Eu sei que essa não é nem de longe a melhor forma de fazer isso, por
> isso quero a ajuda dos senhores para que eu possa ter o mesmo
> resultado desse script, só mais rápido.
> Coloquei esse script para executar em um arquivo de log do Squid (400
> MB, com 1656966 linhas), aí já viu né... passou a noite toda rodando e
> não terminou.
>
> Tentei fazer direto no AWK, mas não tive sucesso. Parei no seguinte erro:
> awk: lin. de com.:2: (FILENAME=- FNR=7648) fatal: impossível abrir
> pipe `date -d'Wed Sep 24 07:42:04 2008' +'%F %T'' (Muitos arquivos
> abertos)
>
> Abraços,
>
>
> M. Rodrigo Monteiro
> address@hidden
> "Free as in Freedom, not free as in free beer"
> Linux User # 403730
>
Mister M,
Faço duas sugestões:
1) O formato de saída pode ser um formato aceito pelo seu banco para
importação ao invés de precisar gerar tantos inserts.
2) Dispense o perl na conversão de timestamp para data. Você pode usar
somente o date para isto. Veja um exemplo:
date -d @$(head -1 access.log | awk '{print $1}') +"%F %T"
Poste aí as mudanças para que possamos continuar auxiliando.
PS: Como nem todo mundo tem log do squid pra teste, poste umas cinco linhas
também. Isto facilita a obtenção de mais colaboradores.
--
Fabiano Caixeta Duarte
Especialista em Redes de Computadores
Linux User #195299
Ribeirão Preto - SP
[As partes desta mensagem que não continham texto foram removidas]
- Tempo de execução de um script, M. Rodrigo Monteiro, 2008/09/26
- Re: [shell-script] Tempo de execução de um script, MrBiTS, 2008/09/26
- Re: [shell-script] Tempo de execução de um script,
Fabiano Caixeta Duarte <=
- Re: [shell-script] Tempo de execução de um script, MrBiTS, 2008/09/26
- Re: [shell-script] Tempo de execução de um script, M. Rodrigo Monteiro, 2008/09/26
- extraer lineas impares, miguel saavedra, 2008/09/26
- Re: [shell-script] extraer lineas impares, Flavio Junior, 2008/09/26
- Re: [shell-script] extraer lineas impares, Fabiano Caixeta Duarte, 2008/09/26
- Re: [shell-script] extraer lineas impares, Marcelo Loureiro, 2008/09/26
Re: Tempo de execução de um script, erbots3, 2008/09/26