Autor Tópico: comando shell(urgente)  (Lida 3095 vezes)

Offline Marjorie

  • Usuário Ubuntu
  • *
  • Mensagens: 1
    • Ver perfil
comando shell(urgente)
« Online: 30 de Junho de 2008, 11:42 »
Olá!
Necessito com urgencia a solução desta sequencia de comandos.
Trata-se de um sistema crítico, que não pode parar, é necessário verificar constantemente o espaço livre na parição onde encontra-se a pasta /dados. Para isso, a CRON deve estar configurada para enviar um email caso o espaço livre seja menor que 10Gb aos administradores e essa checagem deve ser feita 24h por dia, a cada 10 minutos.
Agradeço desde já   :D

Offline brunei

  • Usuário Ubuntu
  • *
  • Mensagens: 97
    • Ver perfil
    • Ubuntu Brasil - Wiki
Re: comando shell(urgente)
« Resposta #1 Online: 30 de Junho de 2008, 12:28 »
Olá Majorie,

Você pode obter a quantidade de espaço livre de uma partição, sabendo uma de suas pastas, através do comando df. A linha abaixo pega a quantidade de espaço livre da partição onde encontra-se o diretório /dados, retornando um valor numérico em kilobytes:

Código: [Selecionar]
df /dados -B 1024 | grep '/dev' | awk '{print $2}'

Daí é só criar um shellscript que atribua esse valor a uma variável e verifique se esse valor é menor que 10000 (10MB), se for, dispara as devidas ações.

Código: [Selecionar]
LIVRE=`df /dados -B 1024 | grep '/dev' | awk '{print $2}'`
if [ $LIVRE -le 10000 ]; then
    disparar ações!
fi

Quanto ao cron, a linha ficaria parecida com a abaixo, considerando que seu script chama-se alerta.sh:

Código: [Selecionar]
0-59/10 * * * * alerta.sh

Nota: não estou no Linux agora, então não pude testar todos os comandos.


Até mais!
Bruno Ribeiro

Offline Felix

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 3.068
    • Ver perfil
    • Alexsandro Felix
Re: comando shell(urgente)
« Resposta #2 Online: 30 de Junho de 2008, 14:11 »
Já que ela quer em Gb pode-se alterar o parâmetro para:
Código: [Selecionar]
df /dados -h | grep '/dev' | awk '{print $2}'

ou encurtando:
Código: [Selecionar]
df /dados -h | awk '{print $2}'
« Última modificação: 30 de Junho de 2008, 14:13 por Felix »

Offline brunei

  • Usuário Ubuntu
  • *
  • Mensagens: 97
    • Ver perfil
    • Ubuntu Brasil - Wiki
Re: comando shell(urgente)
« Resposta #3 Online: 30 de Junho de 2008, 16:46 »
Nossa, muito obrigado Felix. Eu vi GB, mas coloquei em MB!

Aliás, corrigindo meu post, troque $2 por $4 para obter o valor da coluna certa (coluna Available).

Código: [Selecionar]
df /dados -B 1024 | grep '/dev' | awk '{print $4}'
Aliás, Felix, se usar

Código: [Selecionar]
df /dados -h | awk '{print $2}'
como você sugeriu, ocorrerão dois problemas: 1) virão duas linhas, pois o df sempre coloca o título das colunas de dados dele e 2) por causa do -h, virá um valor com uma letra indicando a unidade de medida, o que vai dar problema pois o script precisa comparar valores numéricos (verifica se é igual ou menor que 10GB).


Atualizando, o script poderia ter a comparação

Código: [Selecionar]
LIVRE=`df /dados -B 1024 | grep '/dev' | awk '{print $4}'`
if [ $LIVRE -le 10000000 ]; then
    disparar ações!
fi

Dá para deixar ele bem melhor que isso. Aliás, eu uso o parâmetro -B 1024 para garantir que o valor que o df me passará será dado em KB. Você pode mudar isso.

Até mais!
« Última modificação: 30 de Junho de 2008, 16:48 por brunei »
Bruno Ribeiro

Offline Felix

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 3.068
    • Ver perfil
    • Alexsandro Felix
Re: comando shell(urgente)
« Resposta #4 Online: 30 de Junho de 2008, 16:58 »
Wowwww
eu também nem tinha notado que a coluna estava errada...,

valeu!

Offline clcampos

  • Administrador
  • Usuário Ubuntu
  • *****
  • Mensagens: 10.790
  • .:: User Linux #439596 ::.
    • Ver perfil
Re: comando shell
« Resposta #5 Online: 30 de Junho de 2008, 20:32 »
Caro usuário procure não usar o termo urgente (ou ajuda, ou socorro e etc) no título dos tópico, pois é contra as Regras de Utilização do Fórum.
Cristiano/Timóteo - MG
.: Como Fazer Perguntas de Forma Inteligente :.                
Com dúvida? pesquise!

Offline voyeg3r

  • Usuário Ubuntu
  • *
  • Mensagens: 65
    • Ver perfil
    • http://vivaotux.blogspot.com
Re: comando shell(urgente)
« Resposta #6 Online: 11 de Agosto de 2008, 08:56 »
Um exemplo particular para testar o espaço livre

df -h / | awk '/dev/ {print $4}'
9,3G


A opção '-h' do df corresponde a 'human-readable'
e usei o próprio awk para filtrar ao invés do grep