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

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

Uso de memoria.


From: Fernando Lemes da Silva
Subject: Uso de memoria.
Date: Fri, 19 Dec 2003 14:10:51 -0200
User-agent: Mozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.0.2) Gecko/20030208 Netscape/7.02



   Olá a todos,

Gostaria de saber como se comporta um shell script quando ao uso de memoria. Tenho um script rodando que nao deveria consumir memoria, mas percebo pelo comando free que o uso de memoria vai aumentando enquanto este script esta sendo executado.

Basicamente é um script para ler a quantidade de bytes transferidos em uma determinada interface e gravar no log esses dados.

   Se alguem puder dar uma luz eu agradeço.

   []'s
   Fernando Lemes


#!/bin/bash

# Funcao para limpar o arquivo removendo dados mais velhos que 24 horas.

function clean_log_file {
  limit=$[`date +%s` - 86400]
if [ -e /var/log/webtools/mod700d.log.tmp ]; then rm -f /var/log/webtools/mod700d.log.tmp; fi
  while read linha; do
if [ `echo $linha | cut -d " " -f 1` -gt $limit ]; then echo $linha >> /var/log/webtools/mod700d.log.tmp; fi
  done < /var/log/webtools/mod700d.log
  rm -f /var/log/webtools/mod700d.log
  mv /var/log/webtools/mod700d.log.tmp /var/log/webtools/mod700d.log
}

# Se o diretorio de armazenamento do log nao existir ele eh criado.
if [ ! -d "/var/log/webtools/" ]; then mkdir -p /var/log/webtools/; fi

interfaces=`/sbin/ifconfig | grep Link | cut -d " " -f 1 | grep lo -v`

if [ ! -e "/var/log/webtools/mod700d.log" ]; then
  data=`date +%s`
  for interface in $interfaces; dx
echo o "$data $interface $newrx $newtx $difrx $diftx" >> /var/log/webtools/mod700d.log; fi
    done
    sleep 1
  done
  clean_log_file
done

~
$data $interface `/sbin/ifconfig $interface | grep bytes | tr -s " " | cut -d " " -f 3 | cut -d ":" -f 2` `/sbin/ifconfi g $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
fi

while [ true ]; do
  todayis=`date +%u`
  while [ $todayis -eq `date +%u` ]; do
    for interface in $interfaces; do
      data=`date +%s`
oldrx=`cat /var/log/webtools/mod700d.log | grep $interface | tail -n 1 | cut -d " " -f 3` oldtx=`cat /var/log/webtools/mod700d.log | grep $interface | tail -n 1 | cut -d " " -f 4` newrx=`/sbin/ifconfig $interface | grep bytes | tr -s " " | cut -d " " -f 3 | cut -d ":" -f 2` newtx=`/sbin/ifconfig $interface | grep bytes | tr -s " " | cut -d " " -f 7 | cut -d ":" -f 2`
      difrx=$[$newrx - $oldrx]
      if [ $difrx -lt 0 ]; then difrx=1; fi
      diftx=$[$newtx - $oldtx]
      if [ $diftx -lt 0 ]; then diftx=1; fi
if [ $[$difrx + $diftx] -gt 0 ]; then echo "$data $interface $newrx $newtx $difrx $diftx" >> /var/log/webtools/mod
700d.log; fi
    done
    sleep 1
  done
  clean_log_file
done







reply via email to

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