Copyright 2010 Lennart Poettering
systemd is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
+ 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
- General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU General Public License
+ You should have received a copy of the GNU Lesser General Public License
along with systemd; If not, see <http://www.gnu.org/licenses/>.
-->
<refnamediv>
<refname>systemd.path</refname>
- <refpurpose>systemd path configuration files</refpurpose>
+ <refpurpose>Path unit configuration</refpurpose>
</refnamediv>
<refsynopsisdiv>
- <para><filename>systemd.path</filename></para>
+ <para><filename><replaceable>path</replaceable>.path</filename></para>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para>A unit configuration file whose name ends in
- <filename>.path</filename> encodes information about
+ <literal>.path</literal> encodes information about
a path monitored by systemd, for
path-based activation.</para>
used to monitor files or directories changed by other
machines on remote NFS file systems.</para>
- <para>If an path unit is beneath another mount
+ <para>If a path unit is beneath another mount
point in the file system hierarchy, a dependency
between both units is created automatically.</para>
- <para>Unless <varname>DefaultDependencies=</varname>
- is set to <option>false</option>, path units will
- implicitly have dependencies of type
- <varname>Conflicts=</varname> and
+ <para>Unless <varname>DefaultDependencies=false</varname>
+ is used, path units will implicitly have dependencies of
+ type <varname>Conflicts=</varname> and
<varname>Before=</varname> on
<filename>shutdown.target</filename>. These ensure
that path units are terminated cleanly prior to system
shutdown. Only path units involved with early boot or
- late system shutdown should disable this
- option.</para>
+ late system shutdown should disable this option.
+ </para>
</refsect1>
<refsect1>
monitors. The options specific to the [Path] section
of path units are the following:</para>
- <variablelist>
+ <variablelist class='unit-directives'>
<varlistentry>
<term><varname>PathExists=</varname></term>
+ <term><varname>PathExistsGlob=</varname></term>
<term><varname>PathChanged=</varname></term>
+ <term><varname>PathModified=</varname></term>
<term><varname>DirectoryNotEmpty=</varname></term>
<listitem><para>Defines paths to
<varname>PathExists=</varname> may be
used to watch the mere existence of a
file or directory. If the file
- specified exists the configured unit
+ specified exists, the configured unit
is
- activated. <varname>PathChanged=</varname>
+ activated. <varname>PathExistsGlob=</varname>
+ works similar, but checks for the
+ existence of at least one file
+ matching the globbing pattern
+ specified. <varname>PathChanged=</varname>
may be used to watch a file or
directory and activate the configured
- unit whenever it changes or is
- modified. <varname>DirectoryNotEmpty=</varname>
+ unit whenever it changes. It is not
+ activated on every write to the
+ watched file but it is activated if
+ the file which was open for writing
+ gets
+ closed. <varname>PathModified=</varname>
+ is similar, but additionally it is
+ activated also on simple writes to the
+ watched file.
+ <varname>DirectoryNotEmpty=</varname>
may be used to watch a directory and
activate the configured unit whenever
it contains at least one file.</para>
<para>Multiple directives may be
combined, of the same and of different
- types, to watch multiple paths.</para>
-
- <para>If a path is already existing
+ types, to watch multiple paths. If the
+ empty string is assigned to any of
+ these options, the list of paths to
+ watch is reset, and any prior
+ assignments of these options will not
+ have any effect.</para>
+
+ <para>If a path already exists
(in case of
- <varname>PathExists=</varname>) or a
- directory already is not empty (in
+ <varname>PathExists=</varname> and
+ <varname>PathExistsGlob=</varname>) or
+ a directory already is not empty (in
case of
<varname>DirectoryNotEmpty=</varname>)
- at the time the path unit is activated,
- then the configured unit is
+ at the time the path unit is
+ activated, then the configured unit is
immediately activated as
well. Something similar does not apply
- to <varname>PathChanged=</varname>.
+ to <varname>PathChanged=</varname> and
+ <varname>PathModified=</varname>.</para>
+
+ <para>If the path itself or any of the
+ containing directories are not
+ accessible, <command>systemd</command>
+ will watch for permission changes and
+ notice that conditions are satisfied
+ when permissions allow that.
</para></listitem>
</varlistentry>
<varlistentry>
when any of the configured paths
changes. The argument is a unit name,
whose suffix is not
- <filename>.path</filename>. If not
+ <literal>.path</literal>. If not
specified, this value defaults to a
service that has the same name as the
path unit, except for the suffix. (See
<term><varname>MakeDirectory=</varname></term>
<listitem><para>Takes a boolean
- argument. If true the directories to
+ argument. If true, the directories to
watch are created before
watching. This option is ignored for
<varname>PathExists=</varname>
<listitem><para>If
<varname>MakeDirectory=</varname> is
- enabled use the mode specified here to
+ enabled, use the mode specified here to
create the directories in
question. Takes an access mode in
octal notation. Defaults to
<citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
- <citerefentry><refentrytitle>inotify</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+ <citerefentry><refentrytitle>inotify</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>
</para>
</refsect1>