leodelucas
(usa Debian)
Enviado em 15/01/2008 - 11:25h
Elgio, tudo bem...
usamos o seu script para trabalha exatamente oque precisavamos, da uma olhada como ficou...
agora é que ao invés de somente listar todos arquivos parados que deu alguns milhares de arquivos, queremos altera-lo para que ele de o númedo de arquivos parados e liste o ultimo arquivo e a data mais antiga... é meu amigo acho até que sei oq vc esta pensando, esses iniciantes em shell viu.. "rsrsrs" mas chego lá!
#!/bin/bash
# Configuracoes
tfile=~/time.tmp
dirfile=~/monitoracao/saida.txt
DIR="./" # arquivos de quais dir monitorar?
ESPERA="30" # verificar a cada quantos seguntos?
# ESPERA: para nao gastar muita CPU o script faz a varredura
# e "dorme" por algum tempo (nunca termina). Este tempo eh configurado
# na variavel ESPERA
#ESCREVE="/dev/stdout" # Onde as impressoes irao sair
ESCREVE=/tmp/log.out # Onde as impressoes irao sair
# stdout = saida padrao, como qualquer echo da vida
# Se este programa for executar como daemon recomenda-se filtrar
# todos os echos para um arquivo, por exempo (de log??)
# bara trocar a variavel ESCREVE para um nome de arquivo
function acao ()
{
# Configure aqui o que sera feito quando detectar que o arquivo esta
# parado. Por padrao apenas imprime na tela.
# $1: nome do arquivo
# $2: a quanto tempo ele esta parado
# MIN=$(( $2 / 60 % 60))
# HOR=$(( $2 / 60 / 60))
# SEG=$(( $2 - ($HOR * 60 * 60 + $MIN * 60) ))
# echo "Arquivo $1 esta parado a ${HOR}h${MIN}m${SEG}s" >> $ESCREVE
function acao ()
{
# Configure aqui o que sera feito quando detectar que o arquivo esta
# parado. Por padrao apenas imprime na tela.
# $1: nome do arquivo
# $2: a quanto tempo ele esta parado
# MIN=$(( $2 / 60 % 60))
# HOR=$(( $2 / 60 / 60))
# SEG=$(( $2 - ($HOR * 60 * 60 + $MIN * 60) ))
# echo "Arquivo $1 esta parado a ${HOR}h${MIN}m${SEG}s" >> $ESCREVE
ESCREVE=/tmp/log.out # Onde as impressoes irao sair
# stdout = saida padrao, como qualquer echo da vida
# Se este programa for executar como daemon recomenda-se filtrar
# todos os echos para um arquivo, por exempo (de log??)
# bara trocar a variavel ESCREVE para um nome de arquivo
function acao ()
{
# Configure aqui o que sera feito quando detectar que o arquivo esta
# parado. Por padrao apenas imprime na tela.
# $1: nome do arquivo
# $2: a quanto tempo ele esta parado
# MIN=$(( $2 / 60 % 60))
# HOR=$(( $2 / 60 / 60))
# SEG=$(( $2 - ($HOR * 60 * 60 + $MIN * 60) ))
# echo "Arquivo $1 esta parado a ${HOR}h${MIN}m${SEG}s" >> $ESCREVE
echo "NE: $1, arquivo $2 estah ha mais de 10' parado `ls -lc $2 |awk '{ print $6" " $7" " $8" "; }'`" >> $ESCREVE
}
# Funcao principal
echo "Programa inicio em `date` nos diretorios definidos em $dirfile" >> $ESCREVE
while [ 1=1 ]; do
tme=`date +%m`
tdi=`date +%d`
tho=`date +%H`
tmi=`date +%M`
tse=`date +%S`
echo > $tfile;
if [ $((tmi-10)) -lt 0 ]; then
sleep 10;
fi
tmi=$((tmi-10))
if [ $tmi -lt 10 ]; then
tmi=0$tmi;
fi
touch -acm $tme$tdi$tho$tmi.$tse $tfile
# echo "$tme$tdi$tho$tmi.$tse $tfile"
for i in `cat $dirfile`; do