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> --- 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