[lxc-devel] [PATCH] A new option '--host' for lxc-ps
Serge Hallyn
serge.hallyn at ubuntu.com
Fri Feb 22 14:48:50 UTC 2013
Quoting Stéphane Graber (stgraber at ubuntu.com):
> From: Jäkel, Guido <G.Jaekel at dnb.de>
>
> Allow for an additional --host parameter to lxc-ps hiding all processes running
> in containers.
>
> Signed-off-by: Guido Jäkel <G.Jaekel at dnb.de>
> Signed-off-by: Stéphane Graber <stgraber at 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.hallyn at 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 at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/lxc-devel
More information about the lxc-devel
mailing list