chiark / gitweb /
man: bring machinectl man page up-to-date
[elogind.git] / man / systemd.unit.xml
index 6d4c5c11eb6fab3bb4832a512e60063f4a2e5cb2..bf0deb1f97cd64d983a67daf1f9e0f25b58e4281 100644 (file)
                 template <literal>.d/</literal> subdirectory and reads
                 its <literal>.conf</literal> files.</para>
 
+                <!-- Note that we do not document .include here, as we
+                     consider it mostly obsolete, and want people to
+                     use .d/ drop-ins instead. -->
+
                 <para>Note that while systemd offers a flexible
                 dependency system between units it is recommended to
                 use this functionality only sparingly and instead rely
                 the file system namespace. If this applies, a special
                 way to escape the path name is used, so that the
                 result is usable as part of a filename. Basically,
-                given a path, "/" is replaced by "-", and all
-                unprintable characters and the "-" are replaced by
-                C-style "\x2d" escapes. The root directory "/" is
-                encoded as single dash, while otherwise the initial
-                and ending "/" is removed from all paths during
-                transformation. This escaping is reversible.</para>
+                given a path, "/" is replaced by "-" and all other
+                characters which are not ASCII alphanumerics are
+                replaced by C-style "\x2d" escapes (except that "_"
+                is never replaced and "." is only replaced when it
+                would be the first character in the escaped path).
+                The root directory "/" is encoded as single dash,
+                while otherwise the initial and ending "/" are removed
+                from all paths during transformation. This escaping
+                is reversible. Properly escaped paths can be generated
+                using the <citerefentry><refentrytitle>systemd-escape</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                command.</para>
 
                 <para>Optionally, units may be instantiated from a
                 template file at runtime. This allows creation of
                                 <term><varname>ConditionDirectoryNotEmpty=</varname></term>
                                 <term><varname>ConditionFileNotEmpty=</varname></term>
                                 <term><varname>ConditionFileIsExecutable=</varname></term>
-                                <term><varname>ConditionNull=</varname></term>
+
+                                <!-- We don't document ConditionNull=
+                                     here as it is not particularly
+                                     useful and probably just
+                                     confusing. -->
 
                                 <listitem><para>Before starting a unit
                                 verify that the specified condition is
                                 exists, is a regular file and marked
                                 executable.</para>
 
-                                <para>Finally,
-                                <varname>ConditionNull=</varname> may
-                                be used to add a constant condition
-                                check value to the unit. It takes a
-                                boolean argument. If set to
-                                <varname>false</varname>, the condition
-                                will always fail, otherwise
-                                succeed.</para>
-
                                 <para>If multiple conditions are
                                 specified, the unit will be executed if
                                 all of them apply (i.e. a logical AND
                                 have no effect.</para></listitem>
                         </varlistentry>
 
+                        <varlistentry>
+                                <term><varname>AssertArchitecture=</varname></term>
+                                <term><varname>AssertVirtualization=</varname></term>
+                                <term><varname>AssertHost=</varname></term>
+                                <term><varname>AssertKernelCommandLine=</varname></term>
+                                <term><varname>AssertSecurity=</varname></term>
+                                <term><varname>AssertCapability=</varname></term>
+                                <term><varname>AssertACPower=</varname></term>
+                                <term><varname>AssertNeedsUpdate=</varname></term>
+                                <term><varname>AssertFirstBoot=</varname></term>
+                                <term><varname>AssertPathExists=</varname></term>
+                                <term><varname>AssertPathExistsGlob=</varname></term>
+                                <term><varname>AssertPathIsDirectory=</varname></term>
+                                <term><varname>AssertPathIsSymbolicLink=</varname></term>
+                                <term><varname>AssertPathIsMountPoint=</varname></term>
+                                <term><varname>AssertPathIsReadWrite=</varname></term>
+                                <term><varname>AssertDirectoryNotEmpty=</varname></term>
+                                <term><varname>AssertFileNotEmpty=</varname></term>
+                                <term><varname>AssertFileIsExecutable=</varname></term>
+
+                                <listitem><para>Similar to the
+                                <varname>ConditionArchitecture=</varname>,
+                                <varname>ConditionVirtualization=</varname>,
+                                ... condition settings described above
+                                these settings add assertion checks to
+                                the start-up of the unit. However,
+                                unlike the conditions settings any
+                                assertion setting that is not met
+                                results in failure of the start
+                                job it was triggered by.</para></listitem>
+                        </varlistentry>
+
                         <varlistentry>
                                 <term><varname>SourcePath=</varname></term>
                                 <listitem><para>A path to a
                     </tbody>
                   </tgroup>
                 </table>
+
+               <para>Please note that specifiers
+               <literal>%U</literal>, <literal>%h</literal>,
+               <literal>%s</literal> are mostly useless when systemd
+               is running in system mode.  PID 1 cannot query the
+               user account database for information, so the
+               specifiers only work as shortcuts for things which are
+               already specified in a different way in the unit
+               file. They are fully functional when systemd is
+               running in <option>--user</option> mode.</para>
         </refsect1>
 
         <refsect1>
                         <citerefentry><refentrytitle>systemd.scope</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
                         <citerefentry><refentrytitle>systemd.slice</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
                         <citerefentry><refentrytitle>systemd.time</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
-                        <citerefentry><refentrytitle>systemd-verify</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+                        <citerefentry><refentrytitle>systemd-analyze</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
                         <citerefentry project='man-pages'><refentrytitle>capabilities</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
                         <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
                         <citerefentry><refentrytitle>uname</refentrytitle><manvolnum>1</manvolnum></citerefentry>