使用 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

因此, pipelinedf的输出通过xargs将其折叠成一行,然后在awk此处再次拆分。

令牌$n被替换为n第一个词;对示例输出(以及 的输出free -m)中的单词进行计数显示了对应关系。

xargsawk这里可以通过指示仅查看其输入的第二行来避免。此外,该-P选项应与此处一起使用,df以避免拆分长设备名称。

相关内容