]>
Commit | Line | Data |
---|---|---|
d1ab0ca0 LP |
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.service"> | |
26 | <refentryinfo> | |
27 | <title>systemd.service</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.service</refentrytitle> | |
42 | <manvolnum>5</manvolnum> | |
43 | </refmeta> | |
44 | ||
45 | <refnamediv> | |
46 | <refname>systemd.service</refname> | |
47 | <refpurpose>systemd service configuration files</refpurpose> | |
48 | </refnamediv> | |
49 | ||
50 | <refsynopsisdiv> | |
51 | <para><filename>systemd.service</filename></para> | |
52 | </refsynopsisdiv> | |
53 | ||
54 | <refsect1> | |
55 | <title>Description</title> | |
56 | ||
1f812fea | 57 | <para>A unit configuration file whose name ends in |
65232ea7 LP |
58 | <filename>.service</filename> encodes information |
59 | about a process controlled and supervised by | |
60 | systemd.</para> | |
d1ab0ca0 LP |
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 | |
0d624a78 LP |
66 | files. The common configuration items are configured |
67 | in the generic [Unit] and [Install] sections. The | |
68 | service specific configuration options are configured | |
69 | in the [Service] section.</para> | |
70 | ||
ba60f905 LP |
71 | <para>Additional options are listed in |
72 | <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>, | |
73 | which define the execution environment the commands | |
74 | are executed in.</para> | |
d1ab0ca0 LP |
75 | </refsect1> |
76 | ||
77 | <refsect1> | |
78 | <title>Options</title> | |
79 | ||
0d624a78 LP |
80 | <para>Service files must include a [Service] section, |
81 | which carries information about the service and the | |
82 | process it supervises. A number of options that may be | |
83 | used in this section are shared with other unit | |
84 | types. These options are documented in | |
85 | <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>. The | |
86 | options specific to the [Service] section of service | |
87 | units are the following:</para> | |
88 | ||
d1ab0ca0 LP |
89 | <variablelist> |
90 | <varlistentry> | |
91 | <term><varname>Type=</varname></term> | |
0d624a78 LP |
92 | |
93 | <listitem><para>Configures the process | |
94 | start-up type for this service | |
95 | unit. One of <option>simple</option>, | |
96 | <option>forking</option>, | |
97 | <option>finish</option>, | |
98 | <option>dbus</option>, | |
99 | <option>notify</option>.</para> | |
100 | ||
101 | <para>If set to | |
102 | <option>simple</option> (the default | |
103 | value) it is expected that the process | |
104 | configured with | |
105 | <varname>ExecStart=</varname> is the | |
106 | main process of the service. In this | |
107 | mode, communication channels must be | |
108 | installed before the daemon is started | |
109 | up (e.g. sockets set up by systemd, | |
110 | via socket activation), as systemd | |
111 | will immediately proceed starting | |
112 | follow-up units.</para> | |
113 | ||
114 | <para>If set to | |
115 | <option>forking</option> it is | |
116 | expected that the process configured | |
117 | with <varname>ExecStart=</varname> | |
118 | will start up and call | |
119 | <function>fork()</function>. The | |
120 | parent process is expected to finish | |
121 | when start-up is complete and all | |
122 | communication channels set up. The | |
123 | child continues to run as the main | |
124 | daemon process. This is the behaviour | |
125 | of traditional UNIX daemons. If this | |
126 | setting is used, it is recommended to | |
127 | also use the | |
128 | <varname>PIDFile=</varname> option, so | |
129 | that systemd can identify the main | |
130 | process of the daemon. systemd will | |
131 | proceed starting follow-up units as | |
132 | soon as the parent process | |
133 | exits.</para> | |
134 | ||
135 | <para>Behaviour of | |
136 | <option>finish</option> is similar | |
137 | to <option>simple</option>, however | |
138 | it is expected that the process has to | |
139 | exit before systemd starts follow-up | |
140 | units. <varname>ValidNoProcess=</varname> | |
141 | is particularly useful for this type | |
142 | of service.</para> | |
143 | ||
144 | <para>Behaviour of | |
145 | <option>dbus</option> is similar to | |
146 | <option>simple</option>, however it | |
147 | is expected that the daemon acquires a | |
148 | name on the D-Bus bus, as configured | |
149 | by | |
150 | <varname>BusName=</varname>. systemd | |
151 | will proceed starting follow-up units | |
152 | after the D-Bus bus name has been | |
153 | acquired.</para> | |
154 | ||
155 | <para>Behaviour of | |
156 | <option>notify</option> is similar to | |
157 | <option>simple</option>, however it is | |
158 | expected that the daemon sends a | |
159 | notification message via | |
160 | <citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry> | |
161 | or an equivalent call when it finished | |
162 | starting up. systemd will proceed | |
163 | starting follow-up units after this | |
164 | notification message has been sent. If | |
165 | this option is used | |
166 | <option>NotifyAccess=</option> (see | |
167 | below) must be set to open access to | |
168 | the notification socket provided by | |
169 | systemd.</para> | |
d1ab0ca0 LP |
170 | </listitem> |
171 | </varlistentry> | |
0d624a78 | 172 | |
d1ab0ca0 LP |
173 | <varlistentry> |
174 | <term><varname>ValidNoProcess=</varname></term> | |
0d624a78 LP |
175 | |
176 | <listitem><para>Takes a boolean value | |
177 | that specifies whether the service | |
178 | shall be considered active even when | |
179 | all its processes exited. Defaults to | |
180 | <option>no</option>.</para> | |
d1ab0ca0 LP |
181 | </listitem> |
182 | </varlistentry> | |
183 | ||
184 | <varlistentry> | |
185 | <term><varname>PIDFile=</varname></term> | |
0d624a78 LP |
186 | |
187 | <listitem><para>Takes an absolute file | |
188 | name pointing to the PID file of this | |
189 | daemon. Use of this option is | |
190 | recommended for services where | |
191 | <varname>Type=</varname> is set to | |
192 | <option>forking</option>.</para> | |
d1ab0ca0 LP |
193 | </listitem> |
194 | </varlistentry> | |
195 | ||
196 | <varlistentry> | |
197 | <term><varname>BusName=</varname></term> | |
0d624a78 LP |
198 | |
199 | <listitem><para>Takes a D-Bus bus | |
200 | name, where this service is reachable | |
201 | as. This option is mandatory for | |
202 | services where | |
203 | <varname>Type=</varname> is set to | |
204 | <option>dbus</option>, but its use | |
205 | is otherwise recommended as well if | |
206 | the process takes a name on the D-Bus | |
207 | bus.</para> | |
d1ab0ca0 LP |
208 | </listitem> |
209 | </varlistentry> | |
210 | ||
211 | <varlistentry> | |
212 | <term><varname>ExecStart=</varname></term> | |
0d624a78 LP |
213 | <listitem><para>Takes a command line |
214 | that is executed when this service | |
215 | shall be started up. The first token | |
216 | of the command line must be an | |
217 | absolute file name, then followed by | |
218 | arguments for the process. It is | |
219 | mandatory to set this option for all | |
220 | services. This option may not be | |
221 | specified more than once. Optionally, | |
222 | if the absolute file name is prefixed | |
223 | with @, the second token will be | |
224 | passed as argv[0] to the executed | |
225 | process, followed by the further | |
226 | arguments specified. Unless | |
227 | <option>Type=forking</option> is set, | |
228 | the process started via this command | |
229 | line will be considered the main | |
230 | process of the | |
231 | daemon.</para></listitem> | |
232 | </varlistentry> | |
233 | ||
234 | <varlistentry> | |
235 | <term><varname>ExecStartPre=</varname></term> | |
236 | <term><varname>ExecStartPost=</varname></term> | |
237 | <listitem><para>Additional commands | |
238 | that are executed before (resp. after) | |
239 | the command in | |
240 | <varname>ExecStart=</varname>. If | |
241 | specified more than once, all commands | |
242 | are executed one after the other, | |
243 | serially. Use of these settings is | |
244 | optional.</para></listitem> | |
245 | </varlistentry> | |
246 | ||
247 | <varlistentry> | |
248 | <term><varname>ExecReload=</varname></term> | |
249 | <listitem><para>Commands to execute to | |
250 | trigger a configuration reload in the | |
251 | service. If used more than once, all | |
252 | commands are executed one after the | |
253 | other, serially. Use of this setting is optional. | |
254 | </para></listitem> | |
255 | </varlistentry> | |
256 | ||
257 | <varlistentry> | |
258 | <term><varname>ExecStop=</varname></term> | |
259 | <listitem><para>Commands to execute to | |
260 | stop the service started via | |
261 | <varname>ExecStart=</varname>. If used | |
262 | more than once, all commands are | |
263 | executed one after the other, | |
264 | serially. Use of this setting is | |
265 | optional. All processes remaining for | |
266 | a service after the commands | |
267 | configured in this option are run are | |
268 | terminated according to the | |
269 | <varname>KillMode=</varname> setting | |
270 | (see below). If this option is not | |
271 | specified the process is terminated | |
272 | right-away when service stop is | |
273 | requested.</para></listitem> | |
274 | </varlistentry> | |
275 | ||
276 | <varlistentry> | |
277 | <term><varname>ExecStopPost=</varname></term> | |
278 | <listitem><para>Additional commands | |
279 | that are executed after the service | |
280 | was stopped using the commands | |
281 | configured in | |
282 | <varname>ExecStop=</varname>. If | |
283 | specified more than once, all commands | |
284 | are executed one after the other, | |
285 | serially. Use of these settings is | |
286 | optional.</para></listitem> | |
287 | </varlistentry> | |
288 | ||
289 | <varlistentry> | |
290 | <term><varname>RestartSec=</varname></term> | |
291 | <listitem><para>Configures the time to | |
292 | sleep before restarting a service (as | |
293 | configured with | |
294 | <varname>Restart=</varname>). Takes a | |
295 | unit-less value in seconds, or a time | |
296 | span value such as "5min | |
297 | 20s". Defaults to | |
298 | 100ms.</para></listitem> | |
299 | </varlistentry> | |
300 | ||
301 | <varlistentry> | |
302 | <term><varname>TimeoutSec=</varname></term> | |
303 | <listitem><para>Configures the time to | |
304 | wait for start-up and stop. If a | |
305 | daemon service does not signal | |
306 | start-up completion within the | |
307 | configured time the service will be | |
308 | considered failed and be shut down | |
309 | again. If a service is asked to stop | |
310 | but does not terminate in the | |
311 | specified time it will be terminated | |
312 | forcibly via SIGTERM, and after | |
313 | another delay of this time with | |
314 | SIGKILL. (See | |
1f812fea | 315 | <option>KillMode=</option> |
0d624a78 LP |
316 | below.) Takes a unit-less value in seconds, or a |
317 | time span value such as "5min | |
318 | 20s". Pass 0 to disable the timeout | |
319 | logic. Defaults to | |
320 | 60s.</para></listitem> | |
321 | </varlistentry> | |
322 | ||
323 | <varlistentry> | |
324 | <term><varname>Restart=</varname></term> | |
325 | <listitem><para>Configures whether the | |
326 | main service process shall be restarted when | |
327 | it exists. Takes one of | |
328 | <option>once</option>, | |
329 | <option>restart-on-success</option> or | |
330 | <option>restart-always</option>. If | |
331 | set to <option>once</option> (the | |
332 | default) the service will not be | |
333 | restarted when it exits. If set to | |
334 | <option>restart-on-success</option> it | |
335 | will be restarted only when it exited | |
336 | cleanly, i.e. terminated with an exit | |
337 | code of 0. If set to | |
338 | <option>restart-always</option> the | |
339 | service will be restarted regardless | |
340 | whether it exited cleanly or not, or | |
341 | got terminated abnormally by a | |
342 | signal.</para></listitem> | |
343 | </varlistentry> | |
344 | ||
345 | <varlistentry> | |
346 | <term><varname>PermissionsStartOnly=</varname></term> | |
347 | <listitem><para>Takes a boolean | |
348 | argument. If true, the permission | |
349 | related execution options as | |
350 | configured with | |
351 | <varname>User=</varname> and similar | |
352 | options (see | |
353 | <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry> | |
354 | for more information) are only applied | |
355 | to the process started with | |
356 | <varname>ExecStart=</varname>, and not | |
357 | to the various other | |
358 | <varname>ExecStartPre=</varname>, | |
359 | <varname>ExecStartPost=</varname>, | |
360 | <varname>ExecReload=</varname>, | |
361 | <varname>ExecStop=</varname>, | |
362 | <varname>ExecStopPost=</varname> | |
363 | commands. If false, the setting is | |
364 | applied to all configured commands the | |
365 | same way. Defaults to | |
366 | false.</para></listitem> | |
367 | </varlistentry> | |
368 | ||
369 | <varlistentry> | |
370 | <term><varname>RootDirectoryStartOnly=</varname></term> | |
371 | <listitem><para>Takes a boolean | |
372 | argument. If true, the root directory | |
373 | as configured with the | |
374 | <varname>RootDirectory=</varname> | |
375 | option (see | |
376 | <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry> | |
377 | for more information) is only applied | |
378 | to the process started with | |
379 | <varname>ExecStart=</varname>, and not | |
380 | to the various other | |
381 | <varname>ExecStartPre=</varname>, | |
382 | <varname>ExecStartPost=</varname>, | |
383 | <varname>ExecReload=</varname>, | |
384 | <varname>ExecStop=</varname>, | |
385 | <varname>ExecStopPost=</varname> | |
386 | commands. If false, the setting is | |
387 | applied to all configured commands the | |
388 | same way. Defaults to | |
389 | false.</para></listitem> | |
390 | </varlistentry> | |
391 | ||
392 | <varlistentry> | |
393 | <term><varname>SysVStartPriority=</varname></term> | |
394 | <listitem><para>Set the SysV start | |
395 | priority to use to order this service | |
396 | in relation to SysV services lacking | |
397 | LSB headers. This option is only | |
398 | necessary to fix ordering in relation | |
399 | to legacy SysV services, that have no | |
400 | ordering information encoded in the | |
401 | script headers. As such it should only | |
402 | be used as temporary compatibility | |
403 | option, and not be used in new unit | |
404 | files. Almost always it is a better | |
405 | choice to add explicit ordering | |
406 | directives via | |
407 | <varname>After=</varname> or | |
408 | <varname>Before=</varname>, | |
409 | instead. For more details see | |
410 | <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>. If | |
411 | used, pass an integer value in the | |
412 | range 0-99.</para></listitem> | |
413 | </varlistentry> | |
414 | ||
415 | <varlistentry> | |
416 | <term><varname>KillMode=</varname></term> | |
417 | <listitem><para>Specifies how | |
418 | processes of this service shall be | |
419 | killed. One of | |
420 | <option>control-group</option>, | |
421 | <option>process-group</option>, | |
422 | <option>process</option>, | |
423 | <option>none</option>.</para> | |
424 | ||
425 | <para>If set to | |
426 | <option>control-group</option> all | |
427 | remaining processes in the control | |
428 | group of this service will be | |
429 | terminated on service stop, after the | |
430 | stop command (as configured with | |
431 | <varname>ExecStop=</varname>) is | |
432 | executed. If set to | |
433 | <option>process-group</option> only | |
434 | the members of the process group of | |
435 | the main service process are | |
436 | killed. If set to | |
437 | <option>process</option> only the main | |
438 | process itself is killed. If set to | |
439 | <option>none</option> no process is | |
440 | killed. In this case only the stop | |
441 | command will be executed on service | |
442 | stop, but no process be killed | |
443 | otherwise. Processes remaining alive | |
444 | after stop are left in their control | |
445 | group and the control group continues | |
446 | to exist after stop unless it is | |
447 | empty. Defaults to | |
448 | <option>control-croup</option>.</para> | |
449 | ||
450 | <para>Processes will first be | |
451 | terminated via SIGTERM. If then after | |
452 | a delay (configured via the | |
453 | <option>TimeoutSec=</option> option) | |
454 | processes still remain, the | |
455 | termination request is repeated with | |
456 | the SIGKILL signal. See | |
457 | <citerefentry><refentrytitle>kill</refentrytitle><manvolnum>2</manvolnum></citerefentry> | |
458 | for more | |
459 | information.</para></listitem> | |
460 | </varlistentry> | |
461 | ||
462 | <varlistentry> | |
463 | <term><varname>NonBlocking=</varname></term> | |
464 | <listitem><para>Set O_NONBLOCK flag | |
465 | for all file descriptors passed via | |
466 | socket-based activation. If true, all | |
467 | file descriptors >= 3 (i.e. all except | |
468 | STDIN/STDOUT/STDERR) will have | |
469 | the O_NONBLOCK flag set and hence are in | |
470 | non-blocking mode. This option is only | |
471 | useful in conjunction with a socket | |
472 | unit, as described in | |
473 | <citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>. Defaults | |
474 | to false.</para></listitem> | |
475 | </varlistentry> | |
476 | ||
477 | <varlistentry> | |
478 | <term><varname>NotifyAccess=</varname></term> | |
479 | <listitem><para>Controls access to the | |
480 | service status notification socket, as | |
481 | accessible via the | |
482 | <citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry> | |
483 | call. Takes one of | |
484 | <option>none</option> (the default), | |
485 | <option>main</option> or | |
486 | <option>all</option>. If | |
487 | <option>none</option> no daemon status | |
488 | updates are accepted by the service | |
489 | processes, all status update messages | |
490 | are ignored. If <option>main</option> | |
491 | only service updates sent from the | |
492 | main process of the service are | |
493 | accepted. If <option>all</option> all | |
494 | services updates from all members of | |
495 | the service's control group are | |
496 | accepted. This option must be set to | |
497 | open access to the notification socket | |
498 | when using | |
499 | <varname>Type=notify</varname> (see above).</para></listitem> | |
d1ab0ca0 LP |
500 | </varlistentry> |
501 | ||
502 | </variablelist> | |
503 | </refsect1> | |
504 | ||
505 | <refsect1> | |
506 | <title>See Also</title> | |
507 | <para> | |
508 | <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>8</manvolnum></citerefentry>, | |
0d624a78 LP |
509 | <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>, |
510 | <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>, | |
511 | <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry> | |
d1ab0ca0 LP |
512 | </para> |
513 | </refsect1> | |
514 | ||
515 | </refentry> |