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 }'
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?
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.
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.
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
Tags awk