2013-07-10 09:24:46 +04:00
<?xml version='1.0'?> <!-- * - nxml - * -->
< !DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!--
This file is part of systemd.
Copyright 2013 Zbigniew Jędrzejewski-Szmek
systemd is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
systemd is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with systemd; If not, see <http: / / w w w . g n u . o r g / l i c e n s e s /> .
-->
<refentry id= "systemd-run" >
<refentryinfo >
<title > systemd-run</title>
<productname > systemd</productname>
<authorgroup >
<author >
<contrib > Developer</contrib>
<firstname > Lennart</firstname>
<surname > Poettering</surname>
<email > lennart@poettering.net</email>
</author>
</authorgroup>
</refentryinfo>
<refmeta >
<refentrytitle > systemd-run</refentrytitle>
<manvolnum > 1</manvolnum>
</refmeta>
<refnamediv >
<refname > systemd-run</refname>
2013-07-19 19:51:26 +04:00
<refpurpose > Run programs in transient scope or service units</refpurpose>
2013-07-10 09:24:46 +04:00
</refnamediv>
<refsynopsisdiv >
<cmdsynopsis >
<command > systemd-run</command>
<arg choice= "opt" rep= "repeat" > OPTIONS</arg>
<arg choice= "plain" > <replaceable > COMMAND</replaceable>
<arg choice= "opt" rep= "repeat" > ARGS</arg>
</arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1 >
<title > Description</title>
2013-07-19 19:51:26 +04:00
<para > <command > systemd-run</command> may be used create and start
a transient <filename > .service</filename> or a
<filename > .scope</filename> unit and run the specified
<replaceable > COMMAND</replaceable> in it.</para>
<para > 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 show up in the output of <command > systemctl
list-units</command> like any other unit. It will run in a clean
and detached execution environment. <command > systemd-run</command>
will start the service asynchronously in the background and
immediately return.</para>
<para > If a command is run as transient scope unit, it will be
started directly by <command > systemd-run</command> and thus
inherit the execution environment of the caller. It is however
managed by the service manager similar to normal services, and
will also show up in the output of <command > systemctl
list-units</command> . Execution in this case is synchronous, and
execution will return only when the command finishes.</para>
2013-07-10 09:24:46 +04:00
</refsect1>
<refsect1 >
<title > Options</title>
<para > The following options are understood:</para>
<variablelist >
<varlistentry >
<term > <option > -h</option> </term>
<term > <option > --help</option> </term>
<listitem > <para > Prints a short help
text and exits.</para> </listitem>
</varlistentry>
<varlistentry >
<term > <option > --version</option> </term>
<listitem > <para > Prints a short version
string and exits.</para> </listitem>
</varlistentry>
<varlistentry >
<term > <option > --user</option> </term>
<listitem >
2013-07-19 19:51:26 +04:00
<para > Talk to the service manager of the calling user,
rather than the service manager of the system.</para>
2013-07-10 09:24:46 +04:00
</listitem>
</varlistentry>
2013-10-30 19:44:55 +04:00
<varlistentry >
<term > <option > -H</option> </term>
<term > <option > --host=</option> </term>
<listitem > <para > Execute operation
remotely. Specify a hostname, or
username and hostname separated by <literal > @</literal> ,
to connect to. This will use SSH to
talk to the remote machine manager
instance.</para> </listitem>
</varlistentry>
<varlistentry >
<term > <option > -M</option> </term>
<term > <option > --machine=</option> </term>
<listitem > <para > Execute operation on a
local container. Specify a container
name to connect to.</para> </listitem>
</varlistentry>
2013-07-10 09:24:46 +04:00
<varlistentry >
<term > <option > --scope</option> </term>
<listitem >
2013-07-19 19:51:26 +04:00
<para > Create a transient <filename > .scope</filename> unit instead of
2013-07-10 09:24:46 +04:00
the default transient <filename > .service</filename> unit.
</para>
</listitem>
</varlistentry>
<varlistentry >
<term > <option > --unit=</option> </term>
<listitem > <para > Use this unit name instead of an automatically
generated one.</para> </listitem>
</varlistentry>
<varlistentry >
<term > <option > --description=</option> </term>
<listitem > <para > Provide description for the unit. If not
specified, the command itself will be used as a description.
See <varname > Description=</varname> in
<citerefentry > <refentrytitle > systemd.unit</refentrytitle> <manvolnum > 5</manvolnum> </citerefentry> .
</para> </listitem>
</varlistentry>
<varlistentry >
<term > <option > --slice=</option> </term>
<listitem > <para > Make the new <filename > .service</filename> or
<filename > .scope</filename> unit part of the specified slice,
instead of the <filename > system.slice</filename> .</para>
</listitem>
</varlistentry>
2013-07-26 18:09:25 +04:00
<varlistentry >
<term > <option > --remain-after-exit</option> </term>
2013-08-05 03:13:28 +04:00
<listitem > <para > After the service's process has terminated, keep
2013-07-26 18:09:25 +04:00
the service around until it is explicitly stopped. This is
useful to collect runtime information about the service after
it finished running. Also see
<varname > RemainAfterExit=</varname> in
<citerefentry > <refentrytitle > systemd.service</refentrytitle> <manvolnum > 5</manvolnum> </citerefentry> .
</para>
</listitem>
</varlistentry>
2013-07-30 04:28:22 +04:00
<varlistentry >
<term > <option > --send-sighup</option> </term>
2013-08-05 03:13:28 +04:00
<listitem > <para > When terminating the scope unit, send a SIGHUP
2013-07-30 04:28:22 +04:00
immediately after SIGTERM. This is useful to indicate to
shells and shell-like processes that the connection has been
2013-08-05 03:13:28 +04:00
severed. Also see <varname > SendSIGHUP=</varname> in
2013-07-30 04:28:22 +04:00
<citerefentry > <refentrytitle > systemd.kill</refentrytitle> <manvolnum > 5</manvolnum> </citerefentry> .
</para>
</listitem>
</varlistentry>
2013-07-10 09:24:46 +04:00
</variablelist>
<para > All command-line arguments after the first non-option
argument become part of the commandline of the launched
2013-07-21 08:53:14 +04:00
process. If a command is run as service unit, its first argument
2013-07-19 19:51:26 +04:00
needs to be an absolute binary path.</para>
2013-07-10 09:24:46 +04:00
</refsect1>
<refsect1 >
<title > Exit status</title>
<para > On success, 0 is returned, a non-zero failure
code otherwise.</para>
</refsect1>
2013-09-08 15:51:39 +04:00
<refsect1 >
<title > Example</title>
<para > The following command will log the environment variables
provided by systemd to services:</para>
<programlisting > # 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
</programlisting>
</refsect1>
2013-07-10 09:24:46 +04:00
<refsect1 >
<title > See Also</title>
<para >
<citerefentry > <refentrytitle > systemd</refentrytitle> <manvolnum > 1</manvolnum> </citerefentry> ,
2013-07-19 19:51:26 +04:00
<citerefentry > <refentrytitle > systemctl</refentrytitle> <manvolnum > 1</manvolnum> </citerefentry> ,
2013-07-10 09:24:46 +04:00
<citerefentry > <refentrytitle > systemd.unit</refentrytitle> <manvolnum > 5</manvolnum> </citerefentry> ,
<citerefentry > <refentrytitle > systemd.service</refentrytitle> <manvolnum > 5</manvolnum> </citerefentry> ,
<citerefentry > <refentrytitle > systemd.scope</refentrytitle> <manvolnum > 5</manvolnum> </citerefentry> ,
2013-10-30 19:44:55 +04:00
<citerefentry > <refentrytitle > systemd.slice</refentrytitle> <manvolnum > 5</manvolnum> </citerefentry> ,
<citerefentry > <refentrytitle > machinectl</refentrytitle> <manvolnum > 1</manvolnum> </citerefentry>
2013-07-10 09:24:46 +04:00
</para>
</refsect1>
</refentry>