Difference between revisions of "Processes scope and visibility"
(VE -> container, CT) |
m (VE -> container) |
||
| Line 1: | Line 1: | ||
| − | This [[:Category:HOWTO|HOWTO]] shows how OpenVZ [[hardware node]] administrator can see a processes belonging to the host system only, or to a particular [[ | + | This [[:Category:HOWTO|HOWTO]] shows how OpenVZ [[hardware node]] |
| + | administrator can see a processes belonging to the host system only, or to a | ||
| + | particular [[container]]. | ||
== Problem == | == Problem == | ||
| − | From [[CT0]] one can see all the processes running on the system; that includes all the processes of all [[ | + | From [[CT0]] one can see all the processes running on the system; that |
| + | includes all the processes of all [[container]]s and the processes of the | ||
| + | [[host system]] itself. Sometimes you just want to see the processes from the | ||
| + | host system only. Sometimes you just want to see the processes from a | ||
| + | particular container. | ||
There are many ways to achieve it. | There are many ways to achieve it. | ||
Revision as of 12:24, 11 March 2008
This HOWTO shows how OpenVZ hardware node administrator can see a processes belonging to the host system only, or to a particular container.
Problem
From CT0 one can see all the processes running on the system; that includes all the processes of all containers and the processes of the host system itself. Sometimes you just want to see the processes from the host system only. Sometimes you just want to see the processes from a particular container.
There are many ways to achieve it.
Solutions
"Poor man's vzps in bash"
Use the following script by aistis, broken by Kir, fixed by Hvdkamer.
First argument is CT ID (0 for the host system), all the remaining arguments are passed to ps(1) utility.
#!/bin/bash
# Usage: ./ovzps CTID [ps flags ...]
function find_container_pids(){
local pid
local myctid=$1
local ctpids=
for pid in $ALLPIDS; do
[ -f /proc/$pid/status ] || continue
ctid=`grep envID /proc/$pid/status | awk -F: '{print $2}'`
if [ ${ctid} = ${myctid} ]; then
ctpids="$ctpids $pid"
fi
done
echo "$ctpids"
}
ALLPIDS=`ps -A -o pid --no-headers`
CTPIDS=`find_container_pids $1`
shift
if [ -n "${CTPIDS}" ]; then
ps $* -p $CTPIDS
else
exit 0
fi
Use vzprocps tools
Take vzprocps tools from http://download.openvz.org/contrib/utils/.
These are usual ps and top utilities (named vztop and vzps to not conflict with the standard ones) with an -E option added. You can use -E CTID option to limit the output to the selected CTID (use 0 for the host system), or just -E without an argument to just add CTID column to output.