我刚刚得到 Geektools,并且试图让 shell geeklettop -F -R -o cpu
以与终端中显示相同的方式显示命令。通过 Google,我找到了这个命令来显示一组系统信息:
uptime | awk '{print "UPTIME : " $3 " " $4 " " $5 " " }'; top -l 1 | awk '/PhysMem/ {print "RAM : " $8 " "}' ; top -l 2 | awk '/CPU usage/; NR; 5 {printf "CPU" $6, $7=":", $8, $9="user ", $10, $11="sys ", $12, $13}'
这包含的 CPU 信息比我想要/需要的要多得多。我希望用更清晰的第一个命令替换第二个命令中的 CPU 信息,但我不知道如何让它正确显示。
答案1
尝试一下ps aux
。它会显示一个按 CPU 使用率排序的干净输出。如果你想要更简洁的输出,可以尝试一下
ps aux | awk '{print $3 " " $11}';
要理解此命令,只需运行ps aux
,然后查看输出。变量$3
指的是输出的第三列。您可以通过在命令中添加或删除这些变量来从 GeekTool 中添加或删除列。引号之间的大量空格只会更改输出中列之间的间距。
如果您需要更多选项,请输入 查看手册页man ps
。(您也可以这样做top
。如果您想知道为什么我没有建议使用 进行修改top
,这是由于以下问题:
GeekTool 的问题在于它需要静态命令的输出。top
可以使用 使其给出静态输出top -l 1
,但因为它只进行一次采样,所以无法获取 CPU 使用率。(为此,它至少需要两个。)您会注意到,如果您运行top -l 1
,您的 CPU 使用率将显示为 0。要纠正该问题,您可以使用top -l 2
。但是,这会显示两次系统使用情况,并且只有第二组数据是正确的。这对 GeekTool 可能没什么帮助。如果您仍然确实想使用top
,可以尝试以下命令:top -l 2 -o cpu -R -stats cpu,command
。但是,它只会显示不正确的数据,因为它首先打印了该数据。