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

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

Re: [shell-script] script pra somar bytes do home de usuarios


From: Roberto Alves
Subject: Re: [shell-script] script pra somar bytes do home de usuarios
Date: Thu, 31 Aug 2006 08:57:26 -0300

Flavio e Tiago,
desculpem-me pela demora pra responder vocês mas eu não estive aqui estes
dias e não tive tempo de tentar suas sugestoes.
Ja posso dizer que testei o bc -iq e descobri que no AIX (que é onde eu
estou) não tenho nem o -i nem o -q.
Sempre que faço alguma coisa no bash tenho que testar no ksh antes de
colocar em uso porque sempre tem alguma coisa faltando ou diferente pra
mudar.
Vou testar suas ideias e ver o que consigo. Qq coisa eu grito.

Obrigado e abraços,

Roberto



On 8/29/06, Flavio Junior <address@hidden> wrote:
>
> Eu, na maestria da minha preguiça, tentei entender o que voce quer
> fazer e bolei o seguinte:
>
> $ USUARIO=nome_usuario
> $ DIR=/diretorio/de/busca
> $ for X in $(find $DIR -type f -user $USUARIO -exec sh -c 'du "{}" |
> cut -f1' \;); do echo "$X" | tr '\n' '+'; echo -n "0"; done | bc -iq
>
> Vamos lá, deixa eu explicar a gambia.
> - O find vai buscar no $DIR por todos os arquivos cujo o owner é o
> $USUARIO e o for vai formatar essa saida para o formato que o bc
> reconheça e possa calcular. Viu que no final ali tem o "pulo do gato"
> da gambiarra que é pra linha noa terminar com um "+".
> Voce vai ter o resultado final em bytes, se quiser em "Kbytes" é só
> adicionar o -k ali no "du" do find.
>
> Se eu entendi o que voce queria, isso deve ajudar se não, eu aprendi
> mais um pouco nessa locura ;)
>
>
> Flávio do Carmo Junior aka blk1d
>
>
> On 8/29/06, Roberto Alves <address@hidden> wrote:
> > Obrigado, Júlio mas o problema é que eu tenho um arquivo com usuários e
> > tamanho de arquivos em bytes e ainda não consigo somar todos os arquivos
> > para cada usuario.
> >
> > # more du.home.tmp
> > admin  5
> > admin  1
> > guest   10
> > user9  5
> > user9  3
> > user10 4
> >
> > Ou seja:
> > o admin teria 6; guest: 10; user9: 8 e user10: 4 em seus respectivos
> > somatórios mas dessa maneira a minha saída ficou assim.
> >
> > Total de uso em disco do usuario admin em bytes: 0
> > Total de uso em disco do usuario guest em bytes: 6
> > Total de uso em disco do usuario user9 em bytes: 10
> > Total de uso em disco do usuario user10 em bytes: 8
> >
> > A primeira ocorrência aparece com 0 e as seguintes com os valores
> errados e
> > a última dançou na estória.
> >
> > Eu já tinha caido nesse erro também mas não consegui sair dele.
> >
> > abraço,
> >
> > Roberto
> >
> >
> >
> >
> > On 8/25/06, Julio C. Neves <address@hidden> wrote:
> > >
> > > Roberto,
> > > não entendi legal e por isso pode ser que a solução não seja essa. Mas
> > > vamos
> > > lá:
> > >
> > >
> > > #!/bin/ksh
> > > #  Nome : Du-home
> > > #  Procedimento : Verificar o uso em kbytes do fs /home por usuario
> > > #
> > > clear
> > >
> > > #du -k /home > du.home.txt
> > > #cat du.home.txt |cut -f3 -d/ > user.txt
> > > #cat du.home.txt |cut -f1 > size.txt
> > > #paste user.txt size.txt | sort > du.home.tmp
> > >
> > >
> > > usuario="a"
> > > BYTE=0
> > > BYTESUM=0
> > >
> > > while read USER BYTE
> > > do
> > >     if  [ $USER = $usuario ]
> > >     then
> > >         BYTESUM=$(($BYTESUM + $BYTE))
> > >     else
> > >
> > >         echo "Total de uso em disco do usuario $USER em bytes:
> $BYTESUM"
> > >         BYTESUM=$BYTE
> > >         usuario=$USER
> > >     fi
> > > done < du.home.tmp
> > >
> > > De qq forma, me parece que vc está usando muitos arquivos sem
> necessidade.
> > > Procure armazenar dados temporários em variáveis. Elas foram feitas
> para
> > > isso...
> > >
> > > Abração,
> > > Julio
> > > :wq
> > >
> > >
> > >
> > >
> > >
> > > 2006/8/24, Roberto Alves <address@hidden>:
> > >
> > > >
> > > >  Pessoal,
> > > > to tentando fazer um script que crie uma lista de arquivos do home
> de
> > > cada
> > > > usuario em uma maquina, com o du, e some os arquivos por usuario
> para eu
> > > > saber quanto cada um tá gastando de disco.
> > > > O script não deve ser dificil mas to errando, acho que no
> algoritimo.
> > > >
> > > >
> > > > explicacao:
> > > > eu criei uma lista "du.home.txt" atraves do comando "du" e tirei as
> > > > colunas
> > > > que não serviam e fiquei apenas com uma coluna de bytes e outra do
> nome
> > > do
> > > > arquivo com o caminho de cada um.
> > > > Esse arquivo limpinho com bytes e files eu chamei de du.home.tmp.
> > > > Quando leio esse arquivo eu tento armazenar o nome do usuario e
> somar
> > > > todos
> > > > os arquivos de cada user mas nao to conseguindo acertar o processo.
> > > > Eu comentei esses passos pra nao repetir a toda hora nos testes e
> fiquei
> > > > com
> > > > um arquivinho pequeno e resumido pra eu poder verificar mais facil.
> > > >
> > > > A cara dele é a seguinte:
> > > >
> > > > server1@>more du.home.tmp
> > > > admin  5
> > > > admin  5
> > > > guest   10
> > > > user9  5
> > > > user9  3
> > > >
> > > >
> > > > Alguem pode me dar uma ajuda?
> > > >
> > > >
> > > >
> > > > server1@>cat du_home.sh
> > > > #!/bin/ksh
> > > > #  Nome : Du-home
> > > > #  Procedimento : Verificar o uso em kbytes do fs /home por usuario
> > > > #
> > > > clear
> > > >
> > > > #du -k /home > du.home.txt
> > > > #cat du.home.txt |cut -f3 -d/ > user.txt
> > > > #cat du.home.txt |cut -f1 > size.txt
> > > > #paste user.txt size.txt | sort > du.home.tmp
> > > >
> > > >
> > > > usuario="a"
> > > > BYTE=0
> > > > BYTESUM=0
> > > >
> > > > while :
> > > >         read USER BYTE
> > > >         do
> > > >
> > > >         [ $USER != $usuario ] &&
> > > >           BYTESUM=$(( "$BYTESUM" + "$BYTE" ))
> > > >           echo "Total de uso em disco do usuario $USER  em bytes:
> > > > $BYTESUM"
> > > > ||
> > > >           # > saida.teste
> > > >
> > > >           BYTESUM=$(( "$BYTESUM" + "$BYTE" ))
> > > >           usuario=$USER
> > > >           echo "Total de uso em disco do usuario $USER  em bytes:
> > > > $BYTESUM"
> > > >           # >> saida.teste
> > > >
> > > >         done < du.home.tmp
> > > >
> > > >
> > > > [As partes desta mensagem que não continham texto foram removidas]
> > > >
> > > >
> > > >
> > >
> > >
> > >
> > > --
> > > Abraços,
> > > Julio
> > > http://www.julioneves.com - Um livro sobre Bash completo e on-line
> > > :wq
> > >
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> > >
> > >
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
> > ---------------------------------------------------------------------
> > Esta lista não admite a abordagem de outras liguagens de programação,
> como perl, C etc. Quem insistir em não seguir esta regra será moderado sem
> prévio aviso.
> > ---------------------------------------------------------------------
> > Sair da lista: address@hidden
> > ---------------------------------------------------------------------
> > Esta lista é moderada de acordo com o previsto em
> http://www.listas-discussao.cjb.net
> > ---------------------------------------------------------------------
> > Servidor Newsgroup da lista: news.gmane.org
> > Grupo: gmane.org.user-groups.programming.shell.brazil
> >
> >
> > Links do Yahoo! Grupos
>
> >
> >
> >
> >
> >
> >
> >
> >
> 
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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