shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] daemon em shell script.


From: Marcelo Giovanni Dias
Subject: Re: [shell-script] daemon em shell script.
Date: Tue, 3 Feb 2004 23:42:13 -0200
User-agent: KMail/1.5.3

Olá Fernando Lemes ...
Fiz algumas modificações em seu scripit para melhorar a perfomace dele, mais 
atensão não testei pois estou no trabalho, Ok !! Se tiver algum erro reporte 
ao forum que eu responderei no possível, espero que lhe ajude.

Em Sáb 31 Jan 2004 21:49, address@hidden escreveu:

> Mensagem: 6
>      Data: Wed, 28 Jan 2004 16:26:38 -0200
>        De: Fernando Lemes da Silva <address@hidden>
>   Assunto: daemon em shell script.
>
>
>     Bom, depois de testar um script durante algum tempo percebi que
> estou com alguns problemas quanto a performance. Estou tentando roda-lo
> como um "daemon" que mantem um arquivo com registros de bytes
> transferidos nas interfaces de rede. O problema é que depois de uns 3
> dias rodando a maquina começa a ficar lenta e cerca de 20% de cpu é
> consumida por causa do script. Alguem saberia me dizer alguma maneira
> melhor de fazer isso ? Seria melhor eu usar perl, c, ou mesmo php ?
>
>     []'s
>     Fernando Lemes

> #!/bin/bash
> #
> # Gerador de log para analise de rede.
> #
> # Limpa o arquivo de log. Dado que o ciclo é de 1 segundo em um dia
> # podem haver no maximo 86400 linhas por interface.
> function clean_log_file {
>   if [ -e /var/log/webtools/mod700d.log -a `wc /var/log/webtools/mod700d.log 
> -l | tr -s ' ' | cut -d ' ' -f2` -gt 86400 ]; then
     # Modifiquei esta linha pois a variável não é sauva em disco permitindo
     # uma velocidade maior ...
     modlog=`tail  /var/log/webtools/mod700d.log -n 86400`
     # Eliminando o arquivo temporário e o comando mv
     echo "$modlog" > /var/log/webtools/mod700d.log
>   fi
> }

> # Se o diretorio não existir ele é criado.
 # Neste caso é melhor o uso do && em vêz do if
[ ! -d "/var/log/webtools/" ] && mkdir -p /var/log/webtools/

> # Pega uma lista das interfaces ethN que a maquina possui.
> interfaces=`/sbin/ifconfig | grep Link | cut -d " " -f 1 | grep lo -v`

> # Se o arquivo não existir ele é criado na hora. Caso exista a função
> # de limpeza eh chamada.

> if [ ! -e "/var/log/webtools/mod700d.log" ]; then
>   data=`date +%s`
>   for interface in "$interfaces"; do
>     echo "$data $interface `/sbin/ifconfig $interface | grep bytes | tr -s " 
> " | cut -d " " -f 3 | cut -d ":" -f 2` `/sbin/ifconfig $interface | grep 
> bytes | tr -s " " | cut -d " " -f 7 | cut -d ":" -f 2` 0 0" >> /var/log/
> webtools/mod700d.log
>   done
> else clean_log_file; fi

> while [ true ]; do
>   todayis=`date +%u`
>   # Aqui ele faz um laço que sai toda meia noite para limpeza do log.

>   while [ $todayis -eq `date +%u` ]; do

>    for interface in "$interfaces"; do
>       data=`date +%s`
>       old=`cat /var/log/webtools/mod700d.log | grep $interface | tail -n 1`
>       oldrx=`echo $old | cut -d ' ' -f3`
>       oldtx=`echo $old | cut -d ' ' -f4`
>       new=`/sbin/ifconfig $interface | grep bytes | tr -s ' '`
>       newrx=`echo $new | cut -d ' ' -f2 | cut -d ':' -f2`
>       newtx=`echo $new | cut -d ' ' -f6 | cut -d ':' -f2`
>       difrx=$[$newrx - $oldrx]

       # Neste caso é melhor o uso do && em vêz do if
       [ $difrx -lt 0 ] && difrx=1
>       diftx=$[$newtx - $oldtx]

       # Neste caso é melhor o uso do && em vêz do if
       [ $diftx -lt 0 ] && diftx=1
       # Neste caso é melhor o uso do && em vêz do if
       [ $[$difrx + $diftx] -gt 0 ] && echo "$data $interface $newrx $newtx
> $difrx $diftx" >> /var/log/webtools/mod700d.log

>     done
>     sleep 1

>   done
>   clean_log_file
>done
-- 
--------------------------------------------------------------------------------------------------------------
| *** Seje Livre e evite a pirataria use GNU/Linux ***
--------------------------------------------------------------------------------------------------------------
| MARCELO GIOVANNI DIAS - WEBMASTER
| E-mail: address@hidden - Site : http://www.boletim.net
--------------------------------------------------------------------------------------------------------------



reply via email to

[Prev in Thread] Current Thread [Next in Thread]