3

我在 Arch Linux 中使用 dwm 平铺窗口管理器。我想自定义顶部栏显示。我已经添加了日期、内存、现在播放和正常运行时间的东西,但是 CPU 显示对我不起作用。当我尝试运行代码以在终端中显示 CPU 使用率时,它运行良好,但是当我将它放在顶部栏中时它不起作用。它根本不显示任何东西。这是代码:

while true; do
    xsetroot -name "Memory $(free -m | grep '^Mem' | awk '{print "total: " $2 "MB used: " $3"MB"}') | CPU $(top -n 1 | grep '^Cpu' | tr -d 'usy,' | awk '{print "user " $2 ", sys " $3}') | Uptime: $(uptime | awk '{print $3}' | tr -d ',') | Now playing: $(ncmpcpp --now-playing | tr -d '(:[:digit:])') | $( date +"%F %R" )"
    sleep 20s
done &

我正在谈论的部分是在“CPU”字符串之后。代码在我的 .xinitrc 中,正如我所说,除了 CPU 显示,一切都很好。

4

1 回答 1

1

您可以通过使用批处理模式top的标志来解决此问题。-b只有在这种模式下,您才能将输出作为普通文本发送到其他程序。所以这个循环将(希望)完成这项工作:

while true; do
    xsetroot -name "Memory $(free -m | grep '^Mem' | awk '{print "total: " $2 "MB used: " $3"MB"}') | CPU $(top -bn 1 | grep '^Cpu' | tr -d 'usy,' | awk '{print "user " $2 ", sys " $3}') | Uptime: $(uptime | awk '{print $3}' | tr -d ',') | Now playing: $(ncmpcpp --now-playing | tr -d '(:[:digit:])') | $( date +"%F %R" )"
    sleep 20s
done &
于 2011-06-03T13:57:35.880 回答