Linuxでdiskio用のカスタムconky barを作成する方法は?

Linuxでdiskio用のカスタムconky barを作成する方法は?

私はUbuntu 16.10(x86-64)、カーネル4.8.0-59-generic、Cinnamon 3.0.7でconky 1.10.3(conky-all)を使用しています。

diskioの列(実際にはdisco_readの列とdisco_writeの列)を作成する方法は?
Conkyにはdisco(数値提供)とdisiograph(バーなし)があります。

試してみましたが、似たようなものを使用する方法が見つかりませんでした${execbar $diskio}

私もwlourfのBARGRAPH WIDGET v2.1というluaスクリプトを台無しにしました。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}}

}

動作します。 「cpu」の代わりに「diskio」と入力すると、空の列が表示されます(一方、conkyのディスクレコーダーにはディスクIOが明確に表示されます)。

ベストアンサー1

name="diskio_read"diskio_write与えられたluaバーチャートウィジェットを使用する際の主な問題は、これらの2つの関数が単純な整数の代わりに数値を2.33KiB返すことです12345。ウィジェットはtonumber()戻り値を変換するためにlua関数のみを使用します。これはこれらの文字列では失敗します。

max=もう1つの問題は、ディスクIOがCPUのように100%に拡張されないため、適切な値(100000000など)を設定する必要があることです。

他の 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

おすすめ記事