]> git.proxmox.com Git - mirror_lxc.git/commitdiff
fix lxc-netstat for nested cgroups
authorSerge Hallyn <serge.hallyn@canonical.com>
Thu, 2 Feb 2012 21:48:17 +0000 (15:48 -0600)
committerDaniel Lezcano <daniel.lezcano@free.fr>
Sun, 26 Feb 2012 09:44:40 +0000 (10:44 +0100)
Use the correct path for the container's cgroup task file.

Also exit out early and cleanly if the container is not running,
and bind-mount /proc/$pid/net with '-n' to keep the entry out
of mtab, else the mtab entry will never go away.

Signed-off-by: Serge Hallyn <serge.hallyn@canonical.com>
Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
src/lxc/lxc-netstat.in

index d7c68d7581a12f0c05249cb76ac6f6aa41038aa1..9e7eec3c202e9b508cf73d82fa31a9a898a281d8 100644 (file)
@@ -45,6 +45,12 @@ if [ -z "$name" ]; then
        exit 1
 fi
 
+lxc-info -n $name 2>&1 | grep -q 'STOPPED'
+if [ $? -eq 0 ]; then
+       echo "Container $name is not running"
+       exit 1
+fi
+
 cgroups=$(mount -l -t cgroup)
 cgroup_path=""
 
@@ -74,12 +80,16 @@ if [ -z "$cgroup_path" ]; then
     exit 1
 fi
 
-pid=$(head -1 $cgroup_path/$name/tasks)
+# the container will be in:
+# ${cgroup_path}.${init_cgroup_path}."lxc".$name
+init_cgroup=`cat /proc/1/cgroup | awk -F: '{ print $3 }' | head -1`
+final_cgroup_path=$cgroup_path/$init_cgroup/lxc
+pid=$(head -1 $final_cgroup_path/$name/tasks)
 
 if [ -z "$pid" ]; then
     echo "no process found for '$name'"
     exit 1
 fi
 
-mount --bind /proc/$pid/net /proc/$$/net && \
+mount -n --bind /proc/$pid/net /proc/$$/net && \
     exec netstat "$@"