Use xargs e awk para imprimir o disco livre / total

0

Me deparei com um script para verificar o servidor e descobri isso.

df -h | xargs | awk '{print "Free/total disk: " $11 " / " $9}'
free -m | xargs | awk '{print "Free/total memory: " $17 " / " $8 " MB"}'

Eu realmente não entendo por que são US $ 11, US $ 9, US $ 17, US $ 8 e por que eles usaram xargs. Alguém poderia esclarecer sobre isso? Btw, aqui está a saída do comando dh -h no meu terminal.

[root@ip-10-0-7-125 07-04-2016]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       20G  3.4G   17G  17% /
    
por The One 07.04.2016 / 06:14

1 resposta

0

Na ausência de qualquer parâmetro, xargs divide sua entrada em palavras e gera as mesmas, separadas por espaços simples:

echo -e a  b\nc | xargs

a b c

Portanto, a saída de df do piping por meio de xargs reduz isso em uma única linha, que é dividida novamente por awk aqui.

Os tokens $n são substituídos pela palavra n ; contando palavras na sua saída de exemplo (e na saída de free -m ) mostra a correspondência.

xargs poderia ser evitado aqui, instruindo awk para ver apenas a segunda linha de sua entrada. Além disso, a opção -P deve ser usada com df aqui para evitar a divisão de nomes extensos de dispositivos.

    
por 07.04.2016 / 07:14

Tags