From 6e2faa3724f1b05d5d5f9accc1b0f05f0ba26b5e Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A4kel=2C=20Guido?= Date: Thu, 21 Feb 2013 16:31:25 -0500 Subject: [PATCH] A new option '--host' for lxc-ps MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Allow for an additional --host parameter to lxc-ps hiding all processes running in containers. Signed-off-by: Guido Jäkel Signed-off-by: Stéphane Graber Acked-by: Serge E. Hallyn --- doc/lxc-ps.sgml.in | 13 +++++++++++++ src/lxc/lxc-ps.in | 13 +++++++++---- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/doc/lxc-ps.sgml.in b/doc/lxc-ps.sgml.in index e266ba8af..b9d8e42b9 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 lxc-ps --name name --lxc + --host -- ps option @@ -104,6 +105,18 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + + + + + + limit the output to the processes belonging + to the host. + + + + diff --git a/src/lxc/lxc-ps.in b/src/lxc/lxc-ps.in index 5f7cf4db3..55a05ce48 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 @@ -80,6 +81,8 @@ while true; do containers=$2; list_container_processes=1; shift 2;; --lxc) 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]) } } -- 2.47.2