diff options
author | Steven Barth <steven@midlink.org> | 2008-08-16 20:18:14 +0000 |
---|---|---|
committer | Steven Barth <steven@midlink.org> | 2008-08-16 20:18:14 +0000 |
commit | d7b95a555baac0a815bfb8975648f7435c4a0754 (patch) | |
tree | 589eaddf1ed9b7647c7bf29dac9c5e9c104d33ef /libs/sys | |
parent | 5237b79adfeaa49b23f6e95379d4e0861c153217 (diff) |
Added process control page
Minor improvements
Diffstat (limited to 'libs/sys')
-rw-r--r-- | libs/sys/luasrc/sys.lua | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/libs/sys/luasrc/sys.lua b/libs/sys/luasrc/sys.lua index 7357d4cfb..6b6ea7012 100644 --- a/libs/sys/luasrc/sys.lua +++ b/libs/sys/luasrc/sys.lua @@ -298,6 +298,46 @@ process = {} -- @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 @@ -318,6 +358,13 @@ function process.setuser(pid, uid) 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 |