我正在尝试将 nVidia GPU 利用率添加到我的 byobu-tmux 状态行。我已经安装了图形处理器统计返回
~$ gpustat
myhost Mon Aug 19 17:26:51 2019 410.48
[0] GeForce GTX 1080 Ti | 22'C, 0 % | 0 / 11178 MB |
[1] GeForce GTX 1080 Ti | 41'C, 0 % | 0 / 11175 MB |
然后我编写了一个文本处理器,保存到 ~/.byobu/bin/2_gpu,按照 byobu 网页中的建议进行自定义状态。
~$ cat .byobu/bin/2_gpu
#!/bin/sh
echo "$(gpustat | tail -n+1 | sed -nr "s/\[[0-9]\].+([0-9]+)\s\%.*$/\1%/p" | tr [:space:] ',' | head -c-1)"
来自似乎有效的 bash shell; shebang 是 sh 还是 bash 似乎并不重要,它工作得很好:
~$ .byobu/bin/2_gpu
0%,0%
但是我无法将该文本放入 byobu-tmux 状态行。更简单的自定义状态可以正常工作,但是在 sed 命令的正则表达式参数中转义引号和/或“$”时存在一些问题。我不确定为什么需要 echo,但是删除 echoecho "$(...)"
没有帮助,在内部双引号和“$”字符上添加反斜杠也没有帮助。
答案1
好吧,经过大量的摆弄,这似乎做了我想要的,还有漂亮的颜色编码的好处:
#!/bin/sh
SED_PATTERN='s/^.*([0-9]+)\s%.*$/\1%%,/p'
GPUSTAT="$(gpustat | tail -n+2 | sed -nr $SED_PATTERN | head -c-2)"
echo "#[bg=blue]GPU:$GPUSTAT#[bg=black]"