[lxc-devel] [PATCH] A new option '--host' for lxc-ps
Stéphane Graber
stgraber at ubuntu.com
Thu Feb 21 21:31:25 UTC 2013
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>
---
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
More information about the lxc-devel
mailing list