[systemd-commits] man/systemd-nspawn.xml src/nspawn src/run

Lennart Poettering lennart at kemper.freedesktop.org
Wed Feb 5 15:43:34 PST 2014


 man/systemd-nspawn.xml |   12 ++++++++++++
 src/nspawn/nspawn.c    |   28 +++++++++++++++++++++-------
 src/run/run.c          |    2 +-
 3 files changed, 34 insertions(+), 8 deletions(-)

New commits:
commit 284c0b917697fb0271381f331ffee28403278e72
Author: Lennart Poettering <lennart at poettering.net>
Date:   Thu Feb 6 00:43:14 2014 +0100

    nspawn: add --quiet switch for turning off any output noise

diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml
index c5d90c4..df318d7 100644
--- a/man/systemd-nspawn.xml
+++ b/man/systemd-nspawn.xml
@@ -416,6 +416,18 @@
                                 more than once.</para></listitem>
                         </varlistentry>
 
+                        <varlistentry>
+                                <term><option>-q</option></term>
+                                <term><option>--quiet</option></term>
+
+                                <listitem><para>Turns off any status
+                                output by the tool itself. When this
+                                switch is used, then the only output
+                                by nspawn will be the console output
+                                of the container OS
+                                itself.</para></listitem>
+                        </varlistentry>
+
                 </variablelist>
 
         </refsect1>
diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
index ed13e81..57818f9 100644
--- a/src/nspawn/nspawn.c
+++ b/src/nspawn/nspawn.c
@@ -117,6 +117,7 @@ static uint64_t arg_retain =
 static char **arg_bind = NULL;
 static char **arg_bind_ro = NULL;
 static char **arg_setenv = NULL;
+static bool arg_quiet = false;
 
 static int help(void) {
 
@@ -144,7 +145,8 @@ static int help(void) {
                "     --bind=PATH[:PATH]     Bind mount a file or directory from the host into\n"
                "                            the container\n"
                "     --bind-ro=PATH[:PATH]  Similar, but creates a read-only bind mount\n"
-               "     --setenv=NAME=VALUE    Pass an environment variable to PID 1\n",
+               "     --setenv=NAME=VALUE    Pass an environment variable to PID 1\n"
+               "  -q --quiet                Do not show status information\n",
                program_invocation_short_name);
 
         return 0;
@@ -184,6 +186,7 @@ static int parse_argv(int argc, char *argv[]) {
                 { "setenv",          required_argument, NULL, ARG_SETENV          },
                 { "process-label",   required_argument, NULL, 'Z'                 },
                 { "file-label",      required_argument, NULL, 'L'                 },
+                { "quiet",           no_argument,       NULL, 'q'                 },
                 {}
         };
 
@@ -192,7 +195,7 @@ static int parse_argv(int argc, char *argv[]) {
         assert(argc >= 0);
         assert(argv);
 
-        while ((c = getopt_long(argc, argv, "+hD:u:bL:M:jS:Z:", options, NULL)) >= 0) {
+        while ((c = getopt_long(argc, argv, "+hD:u:bL:M:jS:Z:q", options, NULL)) >= 0) {
 
                 switch (c) {
 
@@ -373,6 +376,10 @@ static int parse_argv(int argc, char *argv[]) {
                         break;
                 }
 
+                case 'q':
+                        arg_quiet = true;
+                        break;
+
                 case '?':
                         return -EINVAL;
 
@@ -1222,7 +1229,8 @@ int main(int argc, char *argv[]) {
                 goto finish;
         }
 
-        log_info("Spawning container %s on %s. Press ^] three times within 1s to abort execution.", arg_machine, arg_directory);
+        if (!arg_quiet)
+                log_info("Spawning container %s on %s. Press ^] three times within 1s to abort execution.", arg_machine, arg_directory);
 
         if (unlockpt(master) < 0) {
                 log_error("Failed to unlock tty: %m");
@@ -1579,7 +1587,8 @@ int main(int argc, char *argv[]) {
                         break;
                 }
 
-                putc('\n', stdout);
+                if (!arg_quiet)
+                        putc('\n', stdout);
 
                 /* Kill if it is not dead yet anyway */
                 terminate_machine(pid);
@@ -1602,16 +1611,21 @@ int main(int argc, char *argv[]) {
                                 break;
                         }
 
-                        log_debug("Container %s exited successfully.", arg_machine);
+                        if (!arg_quiet)
+                                log_debug("Container %s exited successfully.", arg_machine);
                         break;
                 } else if (status.si_code == CLD_KILLED &&
                            status.si_status == SIGINT) {
-                        log_info("Container %s has been shut down.", arg_machine);
+
+                        if (!arg_quiet)
+                                log_info("Container %s has been shut down.", arg_machine);
                         r = 0;
                         break;
                 } else if (status.si_code == CLD_KILLED &&
                            status.si_status == SIGHUP) {
-                        log_info("Container %s is being rebooted.", arg_machine);
+
+                        if (!arg_quiet)
+                                log_info("Container %s is being rebooted.", arg_machine);
                         continue;
                 } else if (status.si_code == CLD_KILLED ||
                            status.si_code == CLD_DUMPED) {
diff --git a/src/run/run.c b/src/run/run.c
index f9c6c29..724d67d 100644
--- a/src/run/run.c
+++ b/src/run/run.c
@@ -65,7 +65,7 @@ static int help(void) {
                "     --uid=USER           Run as system user\n"
                "     --gid=GROUP          Run as system group\n"
                "     --nice=NICE          Nice level\n"
-               "     --setenv=ENV         Set environment\n",
+               "     --setenv=NAME=VALUE  Set environment\n",
                program_invocation_short_name);
 
         return 0;



More information about the systemd-commits mailing list