-- @return String containing the memory used for caching in kB
-- @return String containing the memory used for buffering in kB
-- @return String containing the free memory amount in kB
--- @return Number containing free memory in percent
--- @return Number containing buffer memory in percent
--- @return Number containing cache memory in percent
function sysinfo()
local c1 = "cat /proc/cpuinfo|grep system\\ typ|cut -d: -f2 2>/dev/null"
local c2 = "uname -m 2>/dev/null"
local system = luci.util.trim(luci.util.exec(c1))
local model = ""
- local memtotal = luci.util.trim(luci.util.exec(c5))
- local memcached = luci.util.trim(luci.util.exec(c6))
- local memfree = luci.util.trim(luci.util.exec(c7))
- local membuffers = luci.util.trim(luci.util.exec(c8))
- local perc_memfree = math.floor((memfree/memtotal)*100)
- local perc_membuffers = math.floor((membuffers/memtotal)*100)
- local perc_memcached = math.floor((memcached/memtotal)*100)
+ local memtotal = tonumber(luci.util.trim(luci.util.exec(c5)))
+ local memcached = tonumber(luci.util.trim(luci.util.exec(c6)))
+ local memfree = tonumber(luci.util.trim(luci.util.exec(c7)))
+ local membuffers = tonumber(luci.util.trim(luci.util.exec(c8)))
if system == "" then
system = luci.util.trim(luci.util.exec(c2))
model = luci.util.trim(luci.util.exec(c4))
end
- return system, model, memtotal, memcached, membuffers, memfree, perc_memfree, perc_membuffers, perc_memcached
+ return system, model, memtotal, memcached, membuffers, memfree
end
--- Retrieves the output of the "logread" command.
-- @return Number containing the current pid
process.info = posix.getpid
+--- Retrieve information about currently running processes.
+-- @return Table containing process information
+function process.list()
+ local data = {}
+ local k
+ local ps = luci.util.execi("top -bn1")
+
+ if not ps then
+ return
+ end
+
+ while true do
+ local line = ps()
+ if not line then
+ return
+ end
+
+ k = luci.util.split(luci.util.trim(line), "%s+", nil, true)
+ if k[1] == "PID" then
+ break
+ end
+ end
+
+ for line in ps do
+ local row = {}
+
+ line = luci.util.trim(line)
+ for i, value in ipairs(luci.util.split(line, "%s+", #k-1, true)) do
+ row[k[i]] = value
+ end
+
+ local pid = tonumber(row[k[1]])
+ if pid then
+ data[pid] = row
+ end
+ end
+
+ return data
+end
+
--- Set the gid of a process identified by given pid.
-- @param pid Number containing the process id
-- @param gid Number containing the Unix group id
return posix.setpid("u", pid, uid)
end
+--- Send a signal to a process identified by given pid.
+-- @param pid Number containing the process id
+-- @param sig Signal to send (default: 15 [SIGTERM])
+-- @return Boolean indicating successful operation
+-- @return Number containing the error code if failed
+process.signal = posix.kill
+
--- LuCI system utilities / user related functions.
-- @class module