Como obter espaço em disco (Avail) usando 'df -h' quando o sistema de arquivos é longo

3

Estou tentando encontrar espaço em disco disponível por meio do console

Eu encontrei df -h | awk '$NF == "/" { print $4 }' para obter a saída necessária.

[root@tmpe2etstmsdc01 ~]# df -h
Filesystem                                                 Size  Used Avail Use% Mounted on
/dev/mapper/vg_root-lv_root                                542G   22G  492G   5% /
tmpfs                                                      127G     0  127G   0% /dev/shm

Avail

[root@tmpe2etstmsdc01 ~]# df -h | awk '$NF == "/" { print $4 }'
492G

Isso fornece o valor Use% quando Filesystem é longo

[root@ldrnr-tlsmsdc16 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_root-lv_root
                   16G   16G     0 100% /
tmpfs             1.9G     0  1.9G   0% /dev/shm

Aqui, o comando dá Use% em vez de Avail

[root@ldrnr-tlsmsdc16 ~]# df -h | awk '$NF == "/" { print $4 }'
100%

Como posso obter Avail nesta condição?

    
por Venkatesh 18.11.2015 / 08:06

4 respostas

0
df -h | awk '$NF == "/" { if($1 ~ /^[0-9]/) print $3; else print $4 }'

ou

df -h | awk '$NF == "/" { if($5 == "/") print $3; else print $4 }'
    
por 18.11.2015 / 12:11
5

Tente:

stat -fc %a /mountpoint

%a é blocos disponíveis para não-superusuário. Use %f para blocos livres totais. Note também que %s é o tamanho do bloco, então se você quiser, digamos, bytes livres totais, você poderia dizer algo como:

stat -fc '%f * %s' /mountpoint | bc

Veja a página man do stat (1) para mais opções . Em geral, stat(1) será mais fácil de trabalhar do que df para saída analisável.

    
por 18.11.2015 / 08:27
1

Com o GNU coreutils, você pode usar isto:

df -h --output=avail / | sed '1d'

Para imprimir apenas a linha Avail do sistema de arquivos montado em / . Unfortunatly df não tem opção para desabilitar a linha de cabeçalho, então sed remove a primeira linha.

    
por 18.11.2015 / 08:33
0

Você também pode tentar com o awk:

df -h|tail -n +2 | awk '{if ($5 == "/")print $3; }'

OR:

df -h|tail -n +2 | awk '{if ($6 == "/") print $4; }'

Dependendo da saída do seu df

    
por 18.11.2015 / 11:41

Tags