我遇到一个脚本来检查服务器并发现了这个。
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
)中的单词进行计数显示了对应关系。
xargs
awk
这里可以通过指示仅查看其输入的第二行来避免。此外,该-P
选项应与此处一起使用,df
以避免拆分长设备名称。