xargs 및 awk를 사용하여 사용 가능한/총 디스크를 인쇄하십시오.

xargs 및 awk를 사용하여 사용 가능한/총 디스크를 인쇄하십시오.

서버를 확인하기 위해 스크립트를 발견했고 이것을 발견했습니다.

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

값이 $11, $9, $17, $8인 이유와 xargs를 사용하는 이유를 정말 이해하지 못합니다. 누군가 이것을 명확히 할 수 있습니까? 그건 그렇고, 이것은 내 터미널에서 dh -h 명령의 출력입니다.

[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% /

답변1

인수 없이 xargs입력을 단어로 분할하고 단일 공백으로 구분하여 출력합니다.

echo -e a  b\\nc | xargs

주어진

a b c

따라서 df파이프라인의 출력은 xargs단일 라인으로 축소한 다음 awk거기서 다시 분할하여 생성됩니다.

토큰은 $n다음으로 대체됩니다.N첫 번째 단어; free -m예제 출력(및 의 출력)에서 단어 수를 세어 보면 해당 항목이 표시됩니다.

xargsawk이는 입력의 두 번째 줄만 보도록 지시하여 피할 수 있습니다. 또한 긴 장치 이름이 분할되는 것을 방지하려면 -P여기에서 이 옵션을 사용해야 합니다 .df

관련 정보