From: Serge Hallyn Date: Thu, 2 Feb 2012 21:48:17 +0000 (-0600) Subject: fix lxc-netstat for nested cgroups X-Git-Tag: lxc-0.8.0-rc2~28 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=581092fc657735b08251e902255453a7d53f3a33;p=thirdparty%2Flxc.git fix lxc-netstat for nested cgroups 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 Signed-off-by: Daniel Lezcano --- diff --git a/src/lxc/lxc-netstat.in b/src/lxc/lxc-netstat.in index d7c68d758..9e7eec3c2 100644 --- a/src/lxc/lxc-netstat.in +++ b/src/lxc/lxc-netstat.in @@ -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 "$@"