+--- 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
+