Veja informações sobre consumo de disco usando o comando 'df' no AIX

1

Estou tentando obter os fs com alto espaço consumido. Estou tentando fazer isso usando o comando df com -g flag (exibição gigabyte) e não consigo obter meu valor esperado.

df -g | sed 's/%//g'| awk '+$5>=75 {print}' | head -10

Com este comando abaixo, recebi um erro:

df -g | sed 's/%//g'| awk '{print $5>=75}' | head -4

Mensagem de erro:

Syntax Error The source line is 1.
The error context is
               {print >>>  $5>= <<<
awk: 0602-502 The statement cannot be correctly parsed. The source line is 1.

Aqui está a saída do comando df -g no AIX:

/tmp>df -g | sed 's/%//g'| awk '$5 >= 75 { print }' | head -4
Filesystem    GB blocks      Free Used    Iused Iused Mounted on
/dev/hd4          10.50     10.05    5    16492     1 /
/dev/hd2          25.50     18.15   29    64361     2 /usr
/dev/hd9var        2.50      0.72   72     4521     3 /var

Visualização completa:

Filesystem    GB blocks      Free %Used    Iused %Iused Mounted on
/dev/hd4          10.50     10.05    5%    16492     1% /
/dev/hd2          25.50     18.15   29%    64357     2% /usr
/dev/hd9var        2.50      1.39   45%     4512     2% /var
/dev/hd3          21.50     20.24    6%     1495     1% /tmp

Eu experimentei o AIX 7.1 PowerPC_POWER8. Eu não sei o que estou fazendo errado!

    
por vicdeveloper 23.08.2017 / 20:27

3 respostas

2

Em vez de usar tr e awk duas vezes, use o awk uma vez:

df -g | awk '{ sub("%", "", $4); if ($4 >= 75) { print $4, $7 }}' | sort -n

Isso substitui os sinais de porcentagem no campo 4 pela string vazia (removendo-os); se o valor restante for pelo menos 75, imprima os campos 4 e 7 e canalize-os para classificar.

Uma melhoria, baseada na lembrança de uma das respostas de Stéphane :

df -g | awk '$4+0 >= 75 { print $4, $7 }' | sort -n

A adição "+0" força uma comparação numérica em vez de uma comparação estritamente baseada em string.

Se você quiser manter o cabeçalho, altere os critérios para:

df -g | awk 'NR < 2 || $4+0 >= 75 { print $4, $7 }' | sort -n
    
por 23.08.2017 / 21:51
1

Concentrando-se no código awk :

awk '{print $5>=75}'

Isso provavelmente deve ser

awk '$5 >= 75 { print }'

que produzirá o registro de entrada atual se seu quinto campo for numericamente maior ou igual a 75.

A julgar pela saída que você obtém, você provavelmente desejará verificar $4 em vez de $5 , já que presumo que seja o quarto campo que contém a porcentagem:

df -g | tr -d '%' | awk '$4 >= 75 { print }' | head -4

Olhando para a mensagem de erro: Usando awk no OpenBSD (que parece reclamar exatamente da mesma forma que o AIX awk ), o código original tem um erro de sintaxe, pois não é possível imprimir $5 >= 75 (a menos que seja colocado entre parênteses, caso em que será avaliado como 0 (falso) ou 1 (verdadeiro)). mawk se comporta da mesma forma.

O GNU awk aceita a sintaxe no código original, mas obviamente ainda não é o que você deseja.

    
por 23.08.2017 / 20:50
0

Este é o erro ... 'Sistema de arquivos GB bloqueia Livre Usado Iusado Iused Montado em'

A solução é:

# df -g | grep Filesystem | sed 's/%//g'| awk '{print $5>=75}' | head -4

    
por 24.08.2018 / 00:53