我可以通过在终端上运行以下命令来获得所需的输出:
top -bn 1 | grep "^ " | awk '{ printf("%-8s %-8s %-8s %-8s %-8s %-8s %-8s\n", $1, $2, $9, $10, $6, $11, $12); }' | head -n 6
我可以通过 SSH 两次并通过在终端上运行以下命令来获取主机名:
ssh 192.168.5.209 "ssh 192.168.5.210 exec \"hostname\""
209 充当类似门户的功能,因此我只能从 209 到 210 进行 SSH。但问题是如何用我上面编写的 top 命令替换“主机名”?特殊字符太多了。
我正在编写一个从 PHP 执行的脚本。
答案1
grep、awk 和 head 可以合并并在本地运行
ssh 192.168.5.209 "ssh 192.168.5.210 top -bn 1 " |
awk '/^ / { printf("%-8s %-8s %-8s %-8s %-8s %-8s %-8s\n", $1, $2, $9, $10, $6, $11, $12); c++ ; if (c==6) exit ;}
在哪里
/^ /
搜索以空格开头的行c++ ; if (c==6) exit ;
打印 6 行后将退出 awk。