summaryrefslogtreecommitdiffstats
path: root/upstream/opensuse-leap-15-6/man1/systemd-run.1
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/opensuse-leap-15-6/man1/systemd-run.1')
-rw-r--r--upstream/opensuse-leap-15-6/man1/systemd-run.1705
1 files changed, 705 insertions, 0 deletions
diff --git a/upstream/opensuse-leap-15-6/man1/systemd-run.1 b/upstream/opensuse-leap-15-6/man1/systemd-run.1
new file mode 100644
index 00000000..4127c887
--- /dev/null
+++ b/upstream/opensuse-leap-15-6/man1/systemd-run.1
@@ -0,0 +1,705 @@
+'\" t
+.TH "SYSTEMD\-RUN" "1" "" "systemd 254" "systemd-run"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+systemd-run \- Run programs in transient scope units, service units, or path\-, socket\-, or timer\-triggered service units
+.SH "SYNOPSIS"
+.HP \w'\fBsystemd\-run\fR\ 'u
+\fBsystemd\-run\fR [OPTIONS...] \fICOMMAND\fR\ [ARGS...]
+.HP \w'\fBsystemd\-run\fR\ 'u
+\fBsystemd\-run\fR [OPTIONS...] [PATH\ OPTIONS...] {\fICOMMAND\fR} [ARGS...]
+.HP \w'\fBsystemd\-run\fR\ 'u
+\fBsystemd\-run\fR [OPTIONS...] [SOCKET\ OPTIONS...] {\fICOMMAND\fR} [ARGS...]
+.HP \w'\fBsystemd\-run\fR\ 'u
+\fBsystemd\-run\fR [OPTIONS...] [TIMER\ OPTIONS...] {\fICOMMAND\fR} [ARGS...]
+.SH "DESCRIPTION"
+.PP
+\fBsystemd\-run\fR
+may be used to create and start a transient
+\&.service
+or
+\&.scope
+unit and run the specified
+\fICOMMAND\fR
+in it\&. It may also be used to create and start a transient
+\&.path,
+\&.socket, or
+\&.timer
+unit, that activates a
+\&.service
+unit when elapsing\&.
+.PP
+If a command is run as transient service unit, it will be started and managed by the service manager like any other service, and thus shows up in the output of
+\fBsystemctl list\-units\fR
+like any other unit\&. It will run in a clean and detached execution environment, with the service manager as its parent process\&. In this mode,
+\fBsystemd\-run\fR
+will start the service asynchronously in the background and return after the command has begun execution (unless
+\fB\-\-no\-block\fR
+or
+\fB\-\-wait\fR
+are specified, see below)\&.
+.PP
+If a command is run as transient scope unit, it will be executed by
+\fBsystemd\-run\fR
+itself as parent process and will thus inherit the execution environment of the caller\&. However, the processes of the command are managed by the service manager similarly to normal services, and will show up in the output of
+\fBsystemctl list\-units\fR\&. Execution in this case is synchronous, and will return only when the command finishes\&. This mode is enabled via the
+\fB\-\-scope\fR
+switch (see below)\&.
+.PP
+If a command is run with path, socket, or timer options such as
+\fB\-\-on\-calendar=\fR
+(see below), a transient path, socket, or timer unit is created alongside the service unit for the specified command\&. Only the transient path, socket, or timer unit is started immediately, the transient service unit will be triggered by the path, socket, or timer unit\&. If the
+\fB\-\-unit=\fR
+option is specified, the
+\fICOMMAND\fR
+may be omitted\&. In this case,
+\fBsystemd\-run\fR
+creates only a
+\&.path,
+\&.socket, or
+\&.timer
+unit that triggers the specified unit\&.
+.PP
+By default, services created with
+\fBsystemd\-run\fR
+default to the
+\fBsimple\fR
+type, see the description of
+\fIType=\fR
+in
+\fBsystemd.service\fR(5)
+for details\&. Note that when this type is used, the service manager (and thus the
+\fBsystemd\-run\fR
+command) considers service start\-up successful as soon as the
+\fBfork()\fR
+for the main service process succeeded, i\&.e\&. before the
+\fBexecve()\fR
+is invoked, and thus even if the specified command cannot be started\&. Consider using the
+\fBexec\fR
+service type (i\&.e\&.
+\fB\-\-property=Type=exec\fR) to ensure that
+\fBsystemd\-run\fR
+returns successfully only if the specified command line has been successfully started\&.
+.PP
+After
+\fBsystemd\-run\fR
+passes the command to the service manager, the manager performs variable expansion\&. This means that dollar characters ("$") which should not be expanded need to be escaped as
+"$$"\&. Expansion can also be disabled using
+\fI\-\-expand\-environment=no\fR\&.
+.SH "OPTIONS"
+.PP
+The following options are understood:
+.PP
+\fB\-\-no\-ask\-password\fR
+.RS 4
+Do not query the user for authentication for privileged operations\&.
+.RE
+.PP
+\fB\-\-scope\fR
+.RS 4
+Create a transient
+\&.scope
+unit instead of the default transient
+\&.service
+unit (see above)\&.
+.RE
+.PP
+\fB\-\-unit=\fR, \fB\-u\fR
+.RS 4
+Use this unit name instead of an automatically generated one\&.
+.RE
+.PP
+\fB\-\-property=\fR, \fB\-p\fR
+.RS 4
+Sets a property on the scope or service unit that is created\&. This option takes an assignment in the same format as
+\fBsystemctl\fR(1)\*(Aqs
+\fBset\-property\fR
+command\&.
+.RE
+.PP
+\fB\-\-description=\fR
+.RS 4
+Provide a description for the service, scope, path, socket, or timer unit\&. If not specified, the command itself will be used as a description\&. See
+\fIDescription=\fR
+in
+\fBsystemd.unit\fR(5)\&.
+.RE
+.PP
+\fB\-\-slice=\fR
+.RS 4
+Make the new
+\&.service
+or
+\&.scope
+unit part of the specified slice, instead of
+system\&.slice
+(when running in
+\fB\-\-system\fR
+mode) or the root slice (when running in
+\fB\-\-user\fR
+mode)\&.
+.RE
+.PP
+\fB\-\-slice\-inherit\fR
+.RS 4
+Make the new
+\&.service
+or
+\&.scope
+unit part of the inherited slice\&. This option can be combined with
+\fB\-\-slice=\fR\&.
+.sp
+An inherited slice is located within
+\fBsystemd\-run\fR
+slice\&. Example: if
+\fBsystemd\-run\fR
+slice is
+foo\&.slice, and the
+\fB\-\-slice=\fR
+argument is
+bar, the unit will be placed under the
+foo\-bar\&.slice\&.
+.RE
+.PP
+\fB\-\-expand\-environment=\fR\fB\fIBOOL\fR\fR
+.RS 4
+Expand environment variables in command arguments\&. If enabled, environment variables specified as
+"${\fIVARIABLE\fR}"
+will be expanded in the same way as in commands specified via
+\fIExecStart=\fR
+in units\&. With
+\fI\-\-scope\fR, this expansion is performed by
+\fBsystemd\-run\fR
+itself, and in other cases by the service manager that spawns the command\&. Note that this is similar to, but not the same as variable expansion in
+\fBbash\fR(1)
+and other shells\&.
+.sp
+The default is to enable this option in all cases, except for
+\fI\-\-scope\fR
+where it is disabled by default, for backward compatibility reasons\&. Note that this will be changed in a future release, where it will be switched to enabled by default as well\&.
+.sp
+See
+\fBsystemd.service\fR(5)
+for a description of variable expansion\&. Disabling variable expansion is useful if the specified command includes or may include a
+"$"
+sign\&.
+.RE
+.PP
+\fB\-r\fR, \fB\-\-remain\-after\-exit\fR
+.RS 4
+After the service process has terminated, keep the service around until it is explicitly stopped\&. This is useful to collect runtime information about the service after it finished running\&. Also see
+\fIRemainAfterExit=\fR
+in
+\fBsystemd.service\fR(5)\&.
+.RE
+.PP
+\fB\-\-send\-sighup\fR
+.RS 4
+When terminating the scope or service unit, send a SIGHUP immediately after SIGTERM\&. This is useful to indicate to shells and shell\-like processes that the connection has been severed\&. Also see
+\fISendSIGHUP=\fR
+in
+\fBsystemd.kill\fR(5)\&.
+.RE
+.PP
+\fB\-\-service\-type=\fR
+.RS 4
+Sets the service type\&. Also see
+\fIType=\fR
+in
+\fBsystemd.service\fR(5)\&. This option has no effect in conjunction with
+\fB\-\-scope\fR\&. Defaults to
+\fBsimple\fR\&.
+.RE
+.PP
+\fB\-\-uid=\fR, \fB\-\-gid=\fR
+.RS 4
+Runs the service process under the specified UNIX user and group\&. Also see
+\fIUser=\fR
+and
+\fIGroup=\fR
+in
+\fBsystemd.exec\fR(5)\&.
+.RE
+.PP
+\fB\-\-nice=\fR
+.RS 4
+Runs the service process with the specified nice level\&. Also see
+\fINice=\fR
+in
+\fBsystemd.exec\fR(5)\&.
+.RE
+.PP
+\fB\-\-working\-directory=\fR
+.RS 4
+Runs the service process with the specified working directory\&. Also see
+\fIWorkingDirectory=\fR
+in
+\fBsystemd.exec\fR(5)\&.
+.RE
+.PP
+\fB\-\-same\-dir\fR, \fB\-d\fR
+.RS 4
+Similar to
+\fB\-\-working\-directory=\fR, but uses the current working directory of the caller for the service to execute\&.
+.RE
+.PP
+\fB\-E \fR\fB\fINAME\fR\fR\fB[=\fR\fB\fIVALUE\fR\fR\fB]\fR, \fB\-\-setenv=\fR\fB\fINAME\fR\fR\fB[=\fR\fB\fIVALUE\fR\fR\fB]\fR
+.RS 4
+Runs the service process with the specified environment variable set\&. This parameter may be used more than once to set multiple variables\&. When
+"="
+and
+\fIVALUE\fR
+are omitted, the value of the variable with the same name in the program environment will be used\&.
+.sp
+Also see
+\fIEnvironment=\fR
+in
+\fBsystemd.exec\fR(5)\&.
+.RE
+.PP
+\fB\-\-pty\fR, \fB\-t\fR
+.RS 4
+When invoking the command, the transient service connects its standard input, output and error to the terminal
+\fBsystemd\-run\fR
+is invoked on, via a pseudo TTY device\&. This allows running programs that expect interactive user input/output as services, such as interactive command shells\&.
+.sp
+Note that
+\fBmachinectl\fR(1)\*(Aqs
+\fBshell\fR
+command is usually a better alternative for requesting a new, interactive login session on the local host or a local container\&.
+.sp
+See below for details on how this switch combines with
+\fB\-\-pipe\fR\&.
+.RE
+.PP
+\fB\-\-pipe\fR, \fB\-P\fR
+.RS 4
+If specified, standard input, output, and error of the transient service are inherited from the
+\fBsystemd\-run\fR
+command itself\&. This allows
+\fBsystemd\-run\fR
+to be used within shell pipelines\&. Note that this mode is not suitable for interactive command shells and similar, as the service process will not become a TTY controller when invoked on a terminal\&. Use
+\fB\-\-pty\fR
+instead in that case\&.
+.sp
+When both
+\fB\-\-pipe\fR
+and
+\fB\-\-pty\fR
+are used in combination the more appropriate option is automatically determined and used\&. Specifically, when invoked with standard input, output and error connected to a TTY
+\fB\-\-pty\fR
+is used, and otherwise
+\fB\-\-pipe\fR\&.
+.sp
+When this option is used the original file descriptors
+\fBsystemd\-run\fR
+receives are passed to the service processes as\-is\&. If the service runs with different privileges than
+\fBsystemd\-run\fR, this means the service might not be able to re\-open the passed file descriptors, due to normal file descriptor access restrictions\&. If the invoked process is a shell script that uses the
+\fBecho "hello" >/dev/stderr\fR
+construct for writing messages to stderr, this might cause problems, as this only works if stderr can be re\-opened\&. To mitigate this use the construct
+\fBecho "hello" >&2\fR
+instead, which is mostly equivalent and avoids this pitfall\&.
+.RE
+.PP
+\fB\-\-shell\fR, \fB\-S\fR
+.RS 4
+A shortcut for
+"\-\-pty \-\-same\-dir \-\-wait \-\-collect \-\-service\-type=exec $SHELL", i\&.e\&. requests an interactive shell in the current working directory, running in service context, accessible with a single switch\&.
+.RE
+.PP
+\fB\-\-quiet\fR, \fB\-q\fR
+.RS 4
+Suppresses additional informational output while running\&. This is particularly useful in combination with
+\fB\-\-pty\fR
+when it will suppress the initial message explaining how to terminate the TTY connection\&.
+.RE
+.PP
+\fB\-\-on\-active=\fR, \fB\-\-on\-boot=\fR, \fB\-\-on\-startup=\fR, \fB\-\-on\-unit\-active=\fR, \fB\-\-on\-unit\-inactive=\fR
+.RS 4
+Defines a monotonic timer relative to different starting points for starting the specified command\&. See
+\fIOnActiveSec=\fR,
+\fIOnBootSec=\fR,
+\fIOnStartupSec=\fR,
+\fIOnUnitActiveSec=\fR
+and
+\fIOnUnitInactiveSec=\fR
+in
+\fBsystemd.timer\fR(5)
+for details\&. These options are shortcuts for
+\fB\-\-timer\-property=\fR
+with the relevant properties\&. These options may not be combined with
+\fB\-\-scope\fR
+or
+\fB\-\-pty\fR\&.
+.RE
+.PP
+\fB\-\-on\-calendar=\fR
+.RS 4
+Defines a calendar timer for starting the specified command\&. See
+\fIOnCalendar=\fR
+in
+\fBsystemd.timer\fR(5)\&. This option is a shortcut for
+\fB\-\-timer\-property=OnCalendar=\fR\&. This option may not be combined with
+\fB\-\-scope\fR
+or
+\fB\-\-pty\fR\&.
+.RE
+.PP
+\fB\-\-on\-clock\-change\fR, \fB\-\-on\-timezone\-change\fR
+.RS 4
+Defines a trigger based on system clock jumps or timezone changes for starting the specified command\&. See
+\fIOnClockChange=\fR
+and
+\fIOnTimezoneChange=\fR
+in
+\fBsystemd.timer\fR(5)\&. These options are shortcuts for
+\fB\-\-timer\-property=OnClockChange=yes\fR
+and
+\fB\-\-timer\-property=OnTimezoneChange=yes\fR\&. These options may not be combined with
+\fB\-\-scope\fR
+or
+\fB\-\-pty\fR\&.
+.RE
+.PP
+\fB\-\-path\-property=\fR, \fB\-\-socket\-property=\fR, \fB\-\-timer\-property=\fR
+.RS 4
+Sets a property on the path, socket, or timer unit that is created\&. This option is similar to
+\fB\-\-property=\fR, but applies to the transient path, socket, or timer unit rather than the transient service unit created\&. This option takes an assignment in the same format as
+\fBsystemctl\fR(1)\*(Aqs
+\fBset\-property\fR
+command\&. These options may not be combined with
+\fB\-\-scope\fR
+or
+\fB\-\-pty\fR\&.
+.RE
+.PP
+\fB\-\-no\-block\fR
+.RS 4
+Do not synchronously wait for the unit start operation to finish\&. If this option is not specified, the start request for the transient unit will be verified, enqueued and
+\fBsystemd\-run\fR
+will wait until the unit\*(Aqs start\-up is completed\&. By passing this argument, it is only verified and enqueued\&. This option may not be combined with
+\fB\-\-wait\fR\&.
+.RE
+.PP
+\fB\-\-wait\fR
+.RS 4
+Synchronously wait for the transient service to terminate\&. If this option is specified, the start request for the transient unit is verified, enqueued, and waited for\&. Subsequently the invoked unit is monitored, and it is waited until it is deactivated again (most likely because the specified command completed)\&. On exit, terse information about the unit\*(Aqs runtime is shown, including total runtime (as well as CPU usage, if
+\fB\-\-property=CPUAccounting=1\fR
+was set) and the exit code and status of the main process\&. This output may be suppressed with
+\fB\-\-quiet\fR\&. This option may not be combined with
+\fB\-\-no\-block\fR,
+\fB\-\-scope\fR
+or the various path, socket, or timer options\&.
+.RE
+.PP
+\fB\-G\fR, \fB\-\-collect\fR
+.RS 4
+Unload the transient unit after it completed, even if it failed\&. Normally, without this option, all units that ran and failed are kept in memory until the user explicitly resets their failure state with
+\fBsystemctl reset\-failed\fR
+or an equivalent command\&. On the other hand, units that ran successfully are unloaded immediately\&. If this option is turned on the "garbage collection" of units is more aggressive, and unloads units regardless if they exited successfully or failed\&. This option is a shortcut for
+\fB\-\-property=CollectMode=inactive\-or\-failed\fR, see the explanation for
+\fICollectMode=\fR
+in
+\fBsystemd.unit\fR(5)
+for further information\&.
+.RE
+.PP
+\fB\-\-user\fR
+.RS 4
+Talk to the service manager of the calling user, rather than the service manager of the system\&.
+.RE
+.PP
+\fB\-\-system\fR
+.RS 4
+Talk to the service manager of the system\&. This is the implied default\&.
+.RE
+.PP
+\fB\-H\fR, \fB\-\-host=\fR
+.RS 4
+Execute the operation remotely\&. Specify a hostname, or a username and hostname separated by
+"@", to connect to\&. The hostname may optionally be suffixed by a port ssh is listening on, separated by
+":", and then a container name, separated by
+"/", which connects directly to a specific container on the specified host\&. This will use SSH to talk to the remote machine manager instance\&. Container names may be enumerated with
+\fBmachinectl \-H \fR\fB\fIHOST\fR\fR\&. Put IPv6 addresses in brackets\&.
+.RE
+.PP
+\fB\-M\fR, \fB\-\-machine=\fR
+.RS 4
+Execute operation on a local container\&. Specify a container name to connect to, optionally prefixed by a user name to connect as and a separating
+"@"
+character\&. If the special string
+"\&.host"
+is used in place of the container name, a connection to the local system is made (which is useful to connect to a specific user\*(Aqs user bus:
+"\-\-user \-\-machine=lennart@\&.host")\&. If the
+"@"
+syntax is not used, the connection is made as root user\&. If the
+"@"
+syntax is used either the left hand side or the right hand side may be omitted (but not both) in which case the local user name and
+"\&.host"
+are implied\&.
+.RE
+.PP
+\fB\-h\fR, \fB\-\-help\fR
+.RS 4
+Print a short help text and exit\&.
+.RE
+.PP
+\fB\-\-version\fR
+.RS 4
+Print a short version string and exit\&.
+.RE
+.PP
+All command line arguments after the first non\-option argument become part of the command line of the launched process\&.
+.SH "EXIT STATUS"
+.PP
+On success, 0 is returned\&. If
+\fBsystemd\-run\fR
+failed to start the service, a non\-zero return value will be returned\&. If
+\fBsystemd\-run\fR
+waits for the service to terminate, the return value will be propagated from the service\&. 0 will be returned on success, including all the cases where systemd considers a service to have exited cleanly, see the discussion of
+\fISuccessExitStatus=\fR
+in
+\fBsystemd.service\fR(5)\&.
+.SH "EXAMPLES"
+.PP
+\fBExample\ \&1.\ \&Logging environment variables provided by systemd to services\fR
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+# systemd\-run env
+Running as unit: run\-19945\&.service
+# journalctl \-u run\-19945\&.service
+Sep 08 07:37:21 bupkis systemd[1]: Starting /usr/bin/env\&.\&.\&.
+Sep 08 07:37:21 bupkis systemd[1]: Started /usr/bin/env\&.
+Sep 08 07:37:21 bupkis env[19948]: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
+Sep 08 07:37:21 bupkis env[19948]: LANG=en_US\&.UTF\-8
+Sep 08 07:37:21 bupkis env[19948]: BOOT_IMAGE=/vmlinuz\-3\&.11\&.0\-0\&.rc5\&.git6\&.2\&.fc20\&.x86_64
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+\fBExample\ \&2.\ \&Limiting resources available to a command\fR
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+# systemd\-run \-p IOWeight=10 updatedb
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+This command invokes the
+\fBupdatedb\fR(8)
+tool, but lowers the block I/O weight for it to 10\&. See
+\fBsystemd.resource-control\fR(5)
+for more information on the
+\fIIOWeight=\fR
+property\&.
+.PP
+\fBExample\ \&3.\ \&Running commands at a specified time\fR
+.PP
+The following command will touch a file after 30 seconds\&.
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+# date; systemd\-run \-\-on\-active=30 \-\-timer\-property=AccuracySec=100ms /bin/touch /tmp/foo
+Mon Dec 8 20:44:24 KST 2014
+Running as unit: run\-71\&.timer
+Will run service as unit: run\-71\&.service
+# journalctl \-b \-u run\-71\&.timer
+\-\- Journal begins at Fri 2014\-12\-05 19:09:21 KST, ends at Mon 2014\-12\-08 20:44:54 KST\&. \-\-
+Dec 08 20:44:38 container systemd[1]: Starting /bin/touch /tmp/foo\&.
+Dec 08 20:44:38 container systemd[1]: Started /bin/touch /tmp/foo\&.
+# journalctl \-b \-u run\-71\&.service
+\-\- Journal begins at Fri 2014\-12\-05 19:09:21 KST, ends at Mon 2014\-12\-08 20:44:54 KST\&. \-\-
+Dec 08 20:44:48 container systemd[1]: Starting /bin/touch /tmp/foo\&.\&.\&.
+Dec 08 20:44:48 container systemd[1]: Started /bin/touch /tmp/foo\&.
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+\fBExample\ \&4.\ \&Allowing access to the tty\fR
+.PP
+The following command invokes
+\fBbash\fR(1)
+as a service passing its standard input, output and error to the calling TTY\&.
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+# systemd\-run \-t \-\-send\-sighup bash
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+\fBExample\ \&5.\ \&Start screen as a user service\fR
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+$ systemd\-run \-\-scope \-\-user screen
+Running scope as unit run\-r14b0047ab6df45bfb45e7786cc839e76\&.scope\&.
+
+$ screen \-ls
+There is a screen on:
+ 492\&.\&.laptop (Detached)
+1 Socket in /var/run/screen/S\-fatima\&.
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+This starts the
+\fBscreen\fR
+process as a child of the
+\fBsystemd \-\-user\fR
+process that was started by
+user@\&.service, in a scope unit\&. A
+\fBsystemd.scope\fR(5)
+unit is used instead of a
+\fBsystemd.service\fR(5)
+unit, because
+\fBscreen\fR
+will exit when detaching from the terminal, and a service unit would be terminated\&. Running
+\fBscreen\fR
+as a user unit has the advantage that it is not part of the session scope\&. If
+\fIKillUserProcesses=yes\fR
+is configured in
+\fBlogind.conf\fR(5), the default, the session scope will be terminated when the user logs out of that session\&.
+.PP
+The
+user@\&.service
+is started automatically when the user first logs in, and stays around as long as at least one login session is open\&. After the user logs out of the last session,
+user@\&.service
+and all services underneath it are terminated\&. This behavior is the default, when "lingering" is not enabled for that user\&. Enabling lingering means that
+user@\&.service
+is started automatically during boot, even if the user is not logged in, and that the service is not terminated when the user logs out\&.
+.PP
+Enabling lingering allows the user to run processes without being logged in, for example to allow
+\fBscreen\fR
+to persist after the user logs out, even if the session scope is terminated\&. In the default configuration, users can enable lingering for themselves:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+$ loginctl enable\-linger
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+\fBExample\ \&6.\ \&Variable expansion by the manager\fR
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+$ systemd\-run \-t echo "<${INVOCATION_ID}>" \*(Aq<${INVOCATION_ID}>\*(Aq
+ <> <5d0149bfa2c34b79bccb13074001eb20>
+
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+The first argument is expanded by the shell (double quotes), but the second one is not expanded by the shell (single quotes)\&.
+\fBecho\fR
+is called with ["/usr/bin/echo",
+"[]",
+"[${INVOCATION_ID}]"] as the argument array, and then
+\fBsystemd\fR
+generates
+\fI${INVOCATION_ID}\fR
+and substitutes it in the command\-line\&. This substitution could not be done on the client side, because the target ID that will be set for the service isn\*(Aqt known before the call is made\&.
+.PP
+\fBExample\ \&7.\ \&Variable expansion and output redirection using a shell\fR
+.PP
+Variable expansion by
+\fBsystemd\fR
+can be disabled with
+\fI\-\-expand\-environment=no\fR\&.
+.PP
+Disabling variable expansion can be useful if the command to execute contains dollar characters and escaping them would be inconvenient\&. For example, when a shell is used:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+$ systemd\-run \-\-expand\-environment=no \-t bash \e
+ \-c \*(Aqecho $SHELL $$ >/dev/stdout\*(Aq
+/bin/bash 12345
+
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+The last argument is passed verbatim to the
+\fBbash\fR
+shell which is started by the service unit\&. The shell expands
+"$SHELL"
+to the path of the shell, and
+"$$"
+to its process number, and then those strings are passed to the
+\fBecho\fR
+built\-in and printed to standard output (which in this case is connected to the calling terminal)\&.
+.PP
+\fBExample\ \&8.\ \&Return value\fR
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+$ systemd\-run \-\-user \-\-wait true
+$ systemd\-run \-\-user \-\-wait \-p SuccessExitStatus=11 bash \-c \*(Aqexit 11\*(Aq
+$ systemd\-run \-\-user \-\-wait \-p SuccessExitStatus=SIGUSR1 \-\-expand\-environment=no \e
+ bash \-c \*(Aqkill \-SIGUSR1 $$\*(Aq
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+Those three invocations will succeed, i\&.e\&. terminate with an exit code of 0\&.
+.SH "SEE ALSO"
+.PP
+\fBsystemd\fR(1),
+\fBsystemctl\fR(1),
+\fBsystemd.unit\fR(5),
+\fBsystemd.service\fR(5),
+\fBsystemd.scope\fR(5),
+\fBsystemd.slice\fR(5),
+\fBsystemd.exec\fR(5),
+\fBsystemd.resource-control\fR(5),
+\fBsystemd.timer\fR(5),
+\fBsystemd-mount\fR(1),
+\fBmachinectl\fR(1)