]> git.ipfire.org Git - thirdparty/systemd.git/blob - man/systemd.path.xml
man: document that PathChanged= does not care for simple writes but only for close...
[thirdparty/systemd.git] / man / systemd.path.xml
1 <?xml version='1.0'?> <!--*-nxml-*-->
2 <?xml-stylesheet type="text/xsl" href="http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl"?>
3 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
4 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
5
6 <!--
7 This file is part of systemd.
8
9 Copyright 2010 Lennart Poettering
10
11 systemd is free software; you can redistribute it and/or modify it
12 under the terms of the GNU General Public License as published by
13 the Free Software Foundation; either version 2 of the License, or
14 (at your option) any later version.
15
16 systemd is distributed in the hope that it will be useful, but
17 WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 General Public License for more details.
20
21 You should have received a copy of the GNU General Public License
22 along with systemd; If not, see <http://www.gnu.org/licenses/>.
23 -->
24
25 <refentry id="systemd.path">
26 <refentryinfo>
27 <title>systemd.path</title>
28 <productname>systemd</productname>
29
30 <authorgroup>
31 <author>
32 <contrib>Developer</contrib>
33 <firstname>Lennart</firstname>
34 <surname>Poettering</surname>
35 <email>lennart@poettering.net</email>
36 </author>
37 </authorgroup>
38 </refentryinfo>
39
40 <refmeta>
41 <refentrytitle>systemd.path</refentrytitle>
42 <manvolnum>5</manvolnum>
43 </refmeta>
44
45 <refnamediv>
46 <refname>systemd.path</refname>
47 <refpurpose>systemd path configuration files</refpurpose>
48 </refnamediv>
49
50 <refsynopsisdiv>
51 <para><filename>systemd.path</filename></para>
52 </refsynopsisdiv>
53
54 <refsect1>
55 <title>Description</title>
56
57 <para>A unit configuration file whose name ends in
58 <filename>.path</filename> encodes information about
59 a path monitored by systemd, for
60 path-based activation.</para>
61
62 <para>This man page lists the configuration options
63 specific to this unit type. See
64 <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>
65 for the common options of all unit configuration
66 files. The common configuration items are configured
67 in the generic [Unit] and [Install] sections. The
68 path specific configuration options are configured in
69 the [Path] section.</para>
70
71 <para>For each path file, a matching unit file must
72 exist, describing the unit to activate when the path
73 changes. By default, a service by the same name as the
74 path (except for the suffix) is activated. Example: a
75 path file <filename>foo.path</filename> activates a
76 matching service <filename>foo.service</filename>. The
77 unit to activate may be controlled by
78 <varname>Unit=</varname> (see below).</para>
79
80 <para>Internally, path units use the
81 <citerefentry><refentrytitle>inotify</refentrytitle><manvolnum>7</manvolnum></citerefentry>
82 API to monitor file systems. Due to that, it suffers by the
83 same limitations as inotify, and for example cannot be
84 used to monitor files or directories changed by other
85 machines on remote NFS file systems.</para>
86
87 <para>If an path unit is beneath another mount
88 point in the file system hierarchy, a dependency
89 between both units is created automatically.</para>
90
91 <para>Unless <varname>DefaultDependencies=</varname>
92 is set to <option>false</option>, path units will
93 implicitly have dependencies of type
94 <varname>Conflicts=</varname> and
95 <varname>Before=</varname> on
96 <filename>shutdown.target</filename>. These ensure
97 that path units are terminated cleanly prior to system
98 shutdown. Only path units involved with early boot or
99 late system shutdown should disable this
100 option.</para>
101 </refsect1>
102
103 <refsect1>
104 <title>Options</title>
105
106 <para>Path files must include a [Path] section,
107 which carries information about the path(s) it
108 monitors. The options specific to the [Path] section
109 of path units are the following:</para>
110
111 <variablelist>
112 <varlistentry>
113 <term><varname>PathExists=</varname></term>
114 <term><varname>PathExistsGlob=</varname></term>
115 <term><varname>PathChanged=</varname></term>
116 <term><varname>DirectoryNotEmpty=</varname></term>
117
118 <listitem><para>Defines paths to
119 monitor for certain changes:
120 <varname>PathExists=</varname> may be
121 used to watch the mere existence of a
122 file or directory. If the file
123 specified exists the configured unit
124 is
125 activated. <varname>PathExistsGlob=</varname>
126 works similar, but checks for the
127 existance of at least one file
128 matching the globbing pattern
129 specified. <varname>PathChanged=</varname>
130 may be used to watch a file or
131 directory and activate the configured
132 unit whenever it changes or is
133 modified. <varname>DirectoryNotEmpty=</varname>
134 may be used to watch a directory and
135 activate the configured unit whenever
136 it contains at least one file.</para>
137
138 <para>The arguments of these
139 directives must be absolute file
140 system paths.</para>
141
142 <para>Multiple directives may be
143 combined, of the same and of different
144 types, to watch multiple paths.</para>
145
146 <para>If a path is already existing
147 (in case of
148 <varname>PathExists=</varname> and
149 <varname>PathExistsGlob=</varname>) or
150 a directory already is not empty (in
151 case of
152 <varname>DirectoryNotEmpty=</varname>)
153 at the time the path unit is
154 activated, then the configured unit is
155 immediately activated as
156 well. Something similar does not apply
157 to
158 <varname>PathChanged=</varname>. The
159 latter is not activated on simple
160 writes but only if files with were
161 opened for writing are closed.
162 </para></listitem>
163 </varlistentry>
164 <varlistentry>
165 <term><varname>Unit=</varname></term>
166
167 <listitem><para>The unit to activate
168 when any of the configured paths
169 changes. The argument is a unit name,
170 whose suffix is not
171 <filename>.path</filename>. If not
172 specified, this value defaults to a
173 service that has the same name as the
174 path unit, except for the suffix. (See
175 above.) It is recommended that the
176 unit name that is activated and the
177 unit name of the path unit are named
178 identical, except for the
179 suffix.</para></listitem>
180 </varlistentry>
181 <varlistentry>
182 <term><varname>MakeDirectory=</varname></term>
183
184 <listitem><para>Takes a boolean
185 argument. If true the directories to
186 watch are created before
187 watching. This option is ignored for
188 <varname>PathExists=</varname>
189 settings. Defaults to
190 <option>false</option>.</para></listitem>
191 </varlistentry>
192 <varlistentry>
193 <term><varname>DirectoryMode=</varname></term>
194
195 <listitem><para>If
196 <varname>MakeDirectory=</varname> is
197 enabled use the mode specified here to
198 create the directories in
199 question. Takes an access mode in
200 octal notation. Defaults to
201 <option>0755</option>.</para></listitem>
202 </varlistentry>
203 </variablelist>
204 </refsect1>
205
206 <refsect1>
207 <title>See Also</title>
208 <para>
209 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
210 <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
211 <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
212 <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
213 <citerefentry><refentrytitle>inotify</refentrytitle><manvolnum>7</manvolnum></citerefentry>
214 </para>
215 </refsect1>
216
217 </refentry>