Quoting Stéphane Graber (stgra...@ubuntu.com):
> From: Jäkel, Guido <g.jae...@dnb.de>
> 
> Allow for an additional --host parameter to lxc-ps hiding all processes 
> running
> in containers.
> 
> Signed-off-by: Guido Jäkel <g.jae...@dnb.de>
> Signed-off-by: Stéphane Graber <stgra...@ubuntu.com>

Oh, I see.  My email to Guido was wrong.  lxc-ps uses cgroups to
determine container membership of a task.

Acked-by: Serge E. Hallyn <serge.hal...@ubuntu.com>

Will especially be problematic once we support lxc.cgroup.dir=""
or whaterver we called it.  This patch doesn't particularly make
that worse - other than giving us a loftier goal to live up to.
(I'm not sure offhand how we'll do this)

> ---
>  doc/lxc-ps.sgml.in | 13 +++++++++++++
>  src/lxc/lxc-ps.in  | 15 ++++++++++-----
>  2 files changed, 23 insertions(+), 5 deletions(-)
> 
> diff --git a/doc/lxc-ps.sgml.in b/doc/lxc-ps.sgml.in
> index e266ba8..b9d8e42 100644
> --- a/doc/lxc-ps.sgml.in
> +++ b/doc/lxc-ps.sgml.in
> @@ -51,6 +51,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 
> 02111-1307 USA
>        <command>lxc-ps</command>
>        <arg choice="opt">--name <replaceable>name</replaceable></arg>
>        <arg choice="opt">--lxc</arg>
> +      <arg choice="opt">--host</arg>
>        <arg choice="opt">-- ps option</arg>
>      </cmdsynopsis>
>    </refsynopsisdiv>
> @@ -106,6 +107,18 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 
> 02111-1307 USA
>  
>        <varlistentry>
>       <term>
> +       <option>--host</option>
> +     </term>
> +     <listitem>
> +       <para>
> +         limit the output to the processes belonging
> +         to the host.
> +       </para>
> +     </listitem>
> +      </varlistentry>
> +
> +      <varlistentry>
> +     <term>
>         <option><optional>ps options</optional></option>
>       </term>
>       <listitem>
> diff --git a/src/lxc/lxc-ps.in b/src/lxc/lxc-ps.in
> index 5f7cf4d..57c4041 100644
> --- a/src/lxc/lxc-ps.in
> +++ b/src/lxc/lxc-ps.in
> @@ -19,7 +19,7 @@
>  
>  usage()
>  {
> -    echo "usage: $(basename $0) [--lxc | --name NAME] [--] [PS_OPTIONS...]" 
> >&2
> +    echo "usage: $(basename $0) [--lxc | --host | --name NAME] [--] 
> [PS_OPTIONS...]" >&2
>  }
>  
>  help() {
> @@ -28,6 +28,7 @@ help() {
>      echo "List current processes with container names." >&2
>      echo >&2
>      echo "  --lxc         show processes in all containers" >&2
> +    echo "  --host        show processes not related to any container, i.e. 
> to the host" >&2
>      echo "  --name NAME   show processes in the specified container" >&2
>      echo "                 (multiple containers can be separated by commas)" 
> >&2
>      echo "  PS_OPTIONS    ps command options (see \`ps --help')" >&2
> @@ -79,7 +80,9 @@ while true; do
>          -n|--name)
>              containers=$2; list_container_processes=1; shift 2;;
>          --lxc)
> -            list_container_processes=1; shift;;
> +            list_container_processes=1; shift;; 
> +        --host)
> +            list_container_processes=-1; shift;;
>          --)
>              shift; break;;
>          *)
> @@ -118,6 +121,7 @@ ps "$@" | awk -v 
> container_field_width="$container_field_width" \
>      -v list_container_processes="$list_container_processes" '
>  # first line is PS header
>  NR == 1 {
> +    header = $0
>      # find pid field index
>      for (i = 1; i<=NF; i++)
>          if ($i == "PID") {
> @@ -126,9 +130,9 @@ NR == 1 {
>          }
>      if (pididx == "") {
>          print("No PID field found") > "/dev/stderr"
> +        header = ""  # to signal error condition to the END rule
>          exit 1
>      }
> -    header = $0
>      next
>  }
>  
> @@ -152,10 +156,11 @@ FNR == 1 {
>  }
>  
>  END {
> +    if (!header) exit 1 # quit due to internal error
>      printf("%-" container_field_width "s %s\n", "CONTAINER", header)
>      for (i in ps_line) {
> -     container = container_of_pid[pid_of_line[i]]
> -        if (list_container_processes == 0 || container != "")
> +        container = container_of_pid[pid_of_line[i]]
> +        if (list_container_processes == 0 || (container != "") == 
> (list_container_processes > 0) )
>              printf("%-" container_field_width "s %s\n", container, 
> ps_line[i])
>      }
>  }
> -- 
> 1.8.1.2
> 
> 
> ------------------------------------------------------------------------------
> Everyone hates slow websites. So do we.
> Make your web apps faster with AppDynamics
> Download AppDynamics Lite for free today:
> http://p.sf.net/sfu/appdyn_d2d_feb
> _______________________________________________
> Lxc-devel mailing list
> Lxc-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/lxc-devel

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_feb
_______________________________________________
Lxc-devel mailing list
Lxc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-devel

Reply via email to