我为状态栏编写了一个脚本dwm
。其中一部分是查找系统上每个核心的当前 cpu 使用情况。我自己找到了一种方法,但我需要一些帮助来修复其中的错误。这是命令:top -bn 2 -d 0.5 | grep -F '%Cpu' | tail -n 4 | awk '{print $3}'
。这假设您top
默认显示每个核心。您可以通过以下方法实现此目的:top
然后按1
,然后按 将W
当前配置保存到.toprc
主文件夹中的文件中。现在每次打开top
它都会显示您的所有核心。我前面提到的命令有一个缺点,当分配给这样的变量时:
CPU=$(top -bn 2 -d 0.5 | grep -F '%Cpu' | tail -n 4 | awk '{print $3}')
然后像这样使用:$CPU
我将在状态栏中得到我想要的输出,但在每个 cpu 百分比之间,将有两个符号彼此分开,将它们和。我该如何摆脱它们?这与我在这里使用数组而不是字符串有什么关系吗?xsetroot
xsetroot -name "$CPU"
v
t
您可以在左侧看到问题图片。
命令:
top -bn 2 -d 0.5 | grep -F '%Cpu' | tail -n 4 | awk '{print $3}'
示例输出:
14.3
12.0
8.0
10.0
使用此脚本的任何人请注意:当核心的 cpu 使用率达到100%
命令输出的阵列时,会将具有当前负载的列从一个列移动到3
另一个列2
。因此,awk '{print $3}'
您将看到us,
column 的输出3
。如果你对此没意见,那就离开吧。如果没有,你也可以有awk
打印栏。2
就这样吧:
。避免所有这些陷阱的解决方案是:
top -bn 2 | grep -F '%Cpu' | tail -n 4 | gawk '{print $2 $3}' | tr -s '\n\:\,[:alpha:]' ' '
答案1
对我来说,值之间的“东西”似乎是换行符的视觉表示(八进制字符代码 12),您在使用时会得到:
echo -e 'a\012b'
您可以尝试将输出通过管道传输,tr '\n' ' '
如下所示:
echo -e 'a\012b' | tr '\n' ' '