diff options
Diffstat (limited to 'health-model.lua')
-rw-r--r-- | health-model.lua | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/health-model.lua b/health-model.lua index 2749e2a..1bc8376 100644 --- a/health-model.lua +++ b/health-model.lua @@ -32,17 +32,31 @@ local function diskfree ( media ) return cmd_result end -local function getpercentage ( data,grep,field1,field2 ) - local debugoutput = "" - local grepline = format.string_to_table(string.match(data,grep .. ".*"),"%s+") - local val1percentage = math.floor(((grepline[field1] / (grepline[field1]+grepline[field2]))*100)+0.5) - return val1percentage +local function memusage () + local mult = { kB=1024, MB=1048576, GB=1073741824 } + local fd = io.open("/proc/meminfo") + local res = {} + local field, value, unit + + for line in fd:lines() do + field,value, unit = string.match(line, "([^: ]*):%s*(%d+)%s(%a+)") + if field ~= nil and value ~= nil then + res[field] = tonumber(value) + if unit ~= nil then + res[field] = res[field] * mult[unit] + end + end + end + fd:close() + + return res end -- ############################################################### -- Public functions get_system = function (self) local system = {} + local meminfo = memusage() system.uptime = cfe({ value=querycmd("uptime"), label="Uptime" }) system.date = cfe({ value=querycmd("date"), label="Date" }) local indexver = indexversion() @@ -50,7 +64,9 @@ get_system = function (self) system.timezone = cfe({ value=date.what_tz(), label="Time Zone" }) system.uname = cfe({ value=querycmd("uname -a"), label="UName" }) system.memory = cfe({ value=querycmd("free"), label="Memory usage" }) - system.memory.used = getpercentage(querycmd("free"), "Total:", 3, 4) + system.memory.free = math.floor(100 * meminfo["MemFree"] / meminfo["MemTotal"]) + system.memory.buffers = math.floor(100 * (meminfo["Buffers"] + meminfo["Cached"]) / meminfo["MemTotal"]) + system.memory.used = 100 - math.floor(100 * (meminfo["MemFree"] + meminfo["Buffers"] + meminfo["Cached"]) / meminfo["MemTotal"]) return cfe({ type="group", value=system }) end |