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

Reply via email to