![xargs 및 awk를 사용하여 사용 가능한/총 디스크를 인쇄하십시오.](https://linux55.com/image/87094/xargs%20%EB%B0%8F%20awk%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%82%AC%EC%9A%A9%20%EA%B0%80%EB%8A%A5%ED%95%9C%2F%EC%B4%9D%20%EB%94%94%EC%8A%A4%ED%81%AC%EB%A5%BC%20%EC%9D%B8%EC%87%84%ED%95%98%EC%8B%AD%EC%8B%9C%EC%98%A4..png)
서버를 확인하기 위해 스크립트를 발견했고 이것을 발견했습니다.
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
예제 출력(및 의 출력)에서 단어 수를 세어 보면 해당 항목이 표시됩니다.
xargs
awk
이는 입력의 두 번째 줄만 보도록 지시하여 피할 수 있습니다. 또한 긴 장치 이름이 분할되는 것을 방지하려면 -P
여기에서 이 옵션을 사용해야 합니다 .df