![如何在 Linux 中为 diskio 创建自定义 conky 栏?](https://linux22.com/image/123087/%E5%A6%82%E4%BD%95%E5%9C%A8%20Linux%20%E4%B8%AD%E4%B8%BA%20diskio%20%E5%88%9B%E5%BB%BA%E8%87%AA%E5%AE%9A%E4%B9%89%20conky%20%E6%A0%8F%EF%BC%9F.png)
我在 Ubuntu 16.10 (x86-64)、内核 4.8.0-59-generic、Cinnamon 3.0.7 中使用 conky 1.10.3 (conky-all)。
如何为 diskio 创建一个栏(实际上,一个用于 diskio_read,另一个用于 diskio_write)?
Conky 有 diskio (给出一个数字)和 disiograph - 没有酒吧。
我尝试过,但找不到一种方法来使用类似的东西${execbar $diskio}
。
我还搞乱了一个 lua 脚本,即 wlourf 的 BARGRAPH WIDGET v2.1,http://u-scripts.blogspot.com/2010/07/bargraph-widget.html但是,虽然使用
{
name="cpu",
--arg="%S",
max=100,
angle=90,
alarm=50,
bg_colour={0x00ff00,0.25},
fg_colour={0x00ff00,1},
alarm_colour={0xff0000,1},
x=0,y=610,
blocks=1,
height=250,width=25,
smooth=true,
mid_colour={{0.5,0xffff00,1}}
}
有效,如果我输入“diskio”而不是“cpu”,我会得到一个空栏(而 conky 的磁盘记录仪清楚地显示磁盘 IO)。
答案1
name="diskio_read"
使用diskio_write
给定的 lua 条形图小部件时的主要问题是这两个函数返回数字,2.33KiB
而不是简单的整数,如12345
.该小部件仅使用 lua 函数tonumber()
来转换返回值,这在这些字符串上失败。
另一个问题是,您当然需要设置max=
一些合适的值(例如 100000000),因为磁盘 io 不会像 cpu 那样缩放到 100%。
如果您不使用任何其他 conky 功能,则可以通过重置请求值的全局变量来解决第一个问题人类可读:
conky.config = {
format_human_readable = false,
...
或者,您可以编辑小部件文件,bargraph.lua
在函数中setup_bar_graph()
更改行:
value = tonumber(conky_parse(string.format('${%s %s}', t.name, t.arg)))
类似的东西
local result = conky_parse(string.format('${%s %s}', t.name, t.arg))
value = tonumber(result)
if value==nil then value = my_tonumber(result) end
并在 function 之前添加您自己的 tonumber 函数conky_main_bars()
。
-- https://unix.stackexchange.com/a/409006/119298
function my_tonumber(n)
local capture = {string.match(n,"^(%d+\.?%d*)([KMGTPB])")}
if #capture<=0 then return 0 end
local v = tonumber(capture[1])
if #capture==1 then return v end
if capture[2]=="K" then return v*1024 end
if capture[2]=="M" then return v*1024*1024 end
if capture[2]=="G" then return v*1024*1024*1024 end
if capture[2]=="T" then return v*1024*1024*1024*1024 end
return v
end
答案2
我如何添加自己的变量来创建 Bar ?
像这样
${execi 5 nvidia-smi | grep -Eo '...%.+?W' | awk '{print $1}' | cut -c1-2}
它显示了 GPU-FanSpeed 的 NumericValue(不带 %)