summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--man/systemd-nspawn.xml12
-rw-r--r--src/nspawn/nspawn.c28
-rw-r--r--src/run/run.c2
3 files changed, 34 insertions, 8 deletions
diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml
index c5d90c4233..df318d7a43 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 ed13e813a7..57818f9bd0 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 f9c6c292ea..724d67d846 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;