1SYSTEMD.SERVICE(5)              systemd.service             SYSTEMD.SERVICE(5)
2
3
4

NAME

6       systemd.service - Service unit configuration
7

SYNOPSIS

9       service.service
10

DESCRIPTION

12       A unit configuration file whose name ends in ".service" encodes
13       information about a process controlled and supervised by systemd.
14
15       This man page lists the configuration options specific to this unit
16       type. See systemd.unit(5) for the common options of all unit
17       configuration files. The common configuration items are configured in
18       the generic "[Unit]" and "[Install]" sections. The service specific
19       configuration options are configured in the "[Service]" section.
20
21       Additional options are listed in systemd.exec(5), which define the
22       execution environment the commands are executed in, and in
23       systemd.kill(5), which define the way the processes of the service are
24       terminated, and in systemd.resource-control(5), which configure
25       resource control settings for the processes of the service.
26
27       If a service is requested under a certain name but no unit
28       configuration file is found, systemd looks for a SysV init script by
29       the same name (with the .service suffix removed) and dynamically
30       creates a service unit from that script. This is useful for
31       compatibility with SysV. Note that this compatibility is quite
32       comprehensive but not 100%. For details about the incompatibilities,
33       see the Incompatibilities with SysV[1] document.
34
35       The systemd-run(1) command allows creating .service and .scope units
36       dynamically and transiently from the command line.
37

SERVICE TEMPLATES

39       It is possible for systemd services to take a single argument via the
40       "service@argument.service" syntax. Such services are called
41       "instantiated" services, while the unit definition without the argument
42       parameter is called a "template". An example could be a dhcpcd@.service
43       service template which takes a network interface as a parameter to form
44       an instantiated service. Within the service file, this parameter or
45       "instance name" can be accessed with %-specifiers. See systemd.unit(5)
46       for details.
47

AUTOMATIC DEPENDENCIES

49   Implicit Dependencies
50       The following dependencies are implicitly added:
51
52       ·   Services with Type=dbus set automatically acquire dependencies of
53           type Requires= and After= on dbus.socket.
54
55       ·   Socket activated services are automatically ordered after their
56           activating .socket units via an automatic After= dependency.
57           Services also pull in all .socket units listed in Sockets= via
58           automatic Wants= and After= dependencies.
59
60       Additional implicit dependencies may be added as result of execution
61       and resource control parameters as documented in systemd.exec(5) and
62       systemd.resource-control(5).
63
64   Default Dependencies
65       The following dependencies are added unless DefaultDependencies=no is
66       set:
67
68       ·   Service units will have dependencies of type Requires= and After=
69           on sysinit.target, a dependency of type After= on basic.target as
70           well as dependencies of type Conflicts= and Before= on
71           shutdown.target. These ensure that normal service units pull in
72           basic system initialization, and are terminated cleanly prior to
73           system shutdown. Only services involved with early boot or late
74           system shutdown should disable this option.
75
76       ·   Instanced service units (i.e. service units with an "@" in their
77           name) are assigned by default a per-template slice unit (see
78           systemd.slice(5)), named after the template unit, containing all
79           instances of the specific template. This slice is normally stopped
80           at shutdown, together with all template instances. If that is not
81           desired, set DefaultDependencies=no in the template unit, and
82           either define your own per-template slice unit file that also sets
83           DefaultDependencies=no, or set Slice=system.slice (or another
84           suitable slice) in the template unit. Also see systemd.resource-
85           control(5).
86

OPTIONS

88       Service files must include a "[Service]" section, which carries
89       information about the service and the process it supervises. A number
90       of options that may be used in this section are shared with other unit
91       types. These options are documented in systemd.exec(5), systemd.kill(5)
92       and systemd.resource-control(5). The options specific to the
93       "[Service]" section of service units are the following:
94
95       Type=
96           Configures the process start-up type for this service unit. One of
97           simple, exec, forking, oneshot, dbus, notify or idle:
98
99           ·   If set to simple (the default if ExecStart= is specified but
100               neither Type= nor BusName= are), the service manager will
101               consider the unit started immediately after the main service
102               process has been forked off. It is expected that the process
103               configured with ExecStart= is the main process of the service.
104               In this mode, if the process offers functionality to other
105               processes on the system, its communication channels should be
106               installed before the service is started up (e.g. sockets set up
107               by systemd, via socket activation), as the service manager will
108               immediately proceed starting follow-up units, right after
109               creating the main service process, and before executing the
110               service's binary. Note that this means systemctl start command
111               lines for simple services will report success even if the
112               service's binary cannot be invoked successfully (for example
113               because the selected User= doesn't exist, or the service binary
114               is missing).
115
116           ·   The exec type is similar to simple, but the service manager
117               will consider the unit started immediately after the main
118               service binary has been executed. The service manager will
119               delay starting of follow-up units until that point. (Or in
120               other words: simple proceeds with further jobs right after
121               fork() returns, while exec will not proceed before both fork()
122               and execve() in the service process succeeded.) Note that this
123               means systemctl start command lines for exec services will
124               report failure when the service's binary cannot be invoked
125               successfully (for example because the selected User= doesn't
126               exist, or the service binary is missing).
127
128           ·   If set to forking, it is expected that the process configured
129               with ExecStart= will call fork() as part of its start-up. The
130               parent process is expected to exit when start-up is complete
131               and all communication channels are set up. The child continues
132               to run as the main service process, and the service manager
133               will consider the unit started when the parent process exits.
134               This is the behavior of traditional UNIX services. If this
135               setting is used, it is recommended to also use the PIDFile=
136               option, so that systemd can reliably identify the main process
137               of the service. systemd will proceed with starting follow-up
138               units as soon as the parent process exits.
139
140           ·   Behavior of oneshot is similar to simple; however, the service
141               manager will consider the unit up after the main process exits.
142               It will then start follow-up units.  RemainAfterExit= is
143               particularly useful for this type of service.  Type=oneshot is
144               the implied default if neither Type= nor ExecStart= are
145               specified. Note that if this option is used without
146               RemainAfterExit= the service will never enter "active" unit
147               state, but directly transition from "activating" to
148               "deactivating" or "dead" since no process is configured that
149               shall run continously. In particular this means that after a
150               service of this type ran (and which has RemainAfterExit= not
151               set) it will not show up as started afterwards, but as dead.
152
153           ·   Behavior of dbus is similar to simple; however, it is expected
154               that the service acquires a name on the D-Bus bus, as
155               configured by BusName=. systemd will proceed with starting
156               follow-up units after the D-Bus bus name has been acquired.
157               Service units with this option configured implicitly gain
158               dependencies on the dbus.socket unit. This type is the default
159               if BusName= is specified.
160
161           ·   Behavior of notify is similar to exec; however, it is expected
162               that the service sends a notification message via sd_notify(3)
163               or an equivalent call when it has finished starting up. systemd
164               will proceed with starting follow-up units after this
165               notification message has been sent. If this option is used,
166               NotifyAccess= (see below) should be set to open access to the
167               notification socket provided by systemd. If NotifyAccess= is
168               missing or set to none, it will be forcibly set to main. Note
169               that currently Type=notify will not work if used in combination
170               with PrivateNetwork=yes.
171
172           ·   Behavior of idle is very similar to simple; however, actual
173               execution of the service program is delayed until all active
174               jobs are dispatched. This may be used to avoid interleaving of
175               output of shell services with the status output on the console.
176               Note that this type is useful only to improve console output,
177               it is not useful as a general unit ordering tool, and the
178               effect of this service type is subject to a 5s timeout, after
179               which the service program is invoked anyway.
180
181           It is generally recommended to use Type=simple for long-running
182           services whenever possible, as it is the simplest and fastest
183           option. However, as this service type won't propagate service
184           start-up failures and doesn't allow ordering of other units against
185           completion of initialization of the service (which for example is
186           useful if clients need to connect to the service through some form
187           of IPC, and the IPC channel is only established by the service
188           itself — in contrast to doing this ahead of time through socket or
189           bus activation or similar), it might not be sufficient for many
190           cases. If so, notify or dbus (the latter only in case the service
191           provides a D-Bus interface) are the preferred options as they allow
192           service program code to precisely schedule when to consider the
193           service started up successfully and when to proceed with follow-up
194           units. The notify service type requires explicit support in the
195           service codebase (as sd_notify() or an equivalent API needs to be
196           invoked by the service at the appropriate time) — if it's not
197           supported, then forking is an alternative: it supports the
198           traditional UNIX service start-up protocol. Finally, exec might be
199           an option for cases where it is enough to ensure the service binary
200           is invoked, and where the service binary itself executes no or
201           little initialization on its own (and its initialization is
202           unlikely to fail). Note that using any type other than simple
203           possibly delays the boot process, as the service manager needs to
204           wait for service initialization to complete. It is hence
205           recommended not to needlessly use any types other than simple.
206           (Also note it is generally not recommended to use idle or oneshot
207           for long-running services.)
208
209       RemainAfterExit=
210           Takes a boolean value that specifies whether the service shall be
211           considered active even when all its processes exited. Defaults to
212           no.
213
214       GuessMainPID=
215           Takes a boolean value that specifies whether systemd should try to
216           guess the main PID of a service if it cannot be determined
217           reliably. This option is ignored unless Type=forking is set and
218           PIDFile= is unset because for the other types or with an explicitly
219           configured PID file, the main PID is always known. The guessing
220           algorithm might come to incorrect conclusions if a daemon consists
221           of more than one process. If the main PID cannot be determined,
222           failure detection and automatic restarting of a service will not
223           work reliably. Defaults to yes.
224
225       PIDFile=
226           Takes a path referring to the PID file of the service. Usage of
227           this option is recommended for services where Type= is set to
228           forking. The path specified typically points to a file below /run/.
229           If a relative path is specified it is hence prefixed with /run/.
230           The service manager will read the PID of the main process of the
231           service from this file after start-up of the service. The service
232           manager will not write to the file configured here, although it
233           will remove the file after the service has shut down if it still
234           exists. The PID file does not need to be owned by a privileged
235           user, but if it is owned by an unprivileged user additional safety
236           restrictions are enforced: the file may not be a symlink to a file
237           owned by a different user (neither directly nor indirectly), and
238           the PID file must refer to a process already belonging to the
239           service.
240
241       BusName=
242           Takes a D-Bus bus name that this service is reachable as. This
243           option is mandatory for services where Type= is set to dbus.
244
245       ExecStart=
246           Commands with their arguments that are executed when this service
247           is started. The value is split into zero or more command lines
248           according to the rules described below (see section "Command Lines"
249           below).
250
251           Unless Type= is oneshot, exactly one command must be given. When
252           Type=oneshot is used, zero or more commands may be specified.
253           Commands may be specified by providing multiple command lines in
254           the same directive, or alternatively, this directive may be
255           specified more than once with the same effect. If the empty string
256           is assigned to this option, the list of commands to start is reset,
257           prior assignments of this option will have no effect. If no
258           ExecStart= is specified, then the service must have
259           RemainAfterExit=yes and at least one ExecStop= line set. (Services
260           lacking both ExecStart= and ExecStop= are not valid.)
261
262           For each of the specified commands, the first argument must be
263           either an absolute path to an executable or a simple file name
264           without any slashes. Optionally, this filename may be prefixed with
265           a number of special characters:
266
267           Table 1. Special executable prefixes
268           ┌───────┬────────────────────────────┐
269Prefix Effect                     
270           ├───────┼────────────────────────────┤
271           │"@"    │ If the executable path is  │
272           │       │ prefixed with "@", the     │
273           │       │ second specified token     │
274           │       │ will be passed as          │
275           │       │ "argv[0]" to the executed  │
276           │       │ process (instead of the    │
277           │       │ actual filename), followed │
278           │       │ by the further arguments   │
279           │       │ specified.                 │
280           ├───────┼────────────────────────────┤
281           │"-"    │ If the executable path is  │
282           │       │ prefixed with "-", an exit │
283           │       │ code of the command        │
284           │       │ normally considered a      │
285           │       │ failure (i.e. non-zero     │
286           │       │ exit status or abnormal    │
287           │       │ exit due to signal) is     │
288           │       │ recorded, but has no       │
289           │       │ further effect and is      │
290           │       │ considered equivalent to   │
291           │       │ success.                   │
292           ├───────┼────────────────────────────┤
293           │":"    │ If the executable path is  │
294           │       │ prefixed with ":",         │
295           │       │ environment variable       │
296           │       │ substitution (as described │
297           │       │ by the "Command Lines"     │
298           │       │ section below) is not      │
299           │       │ applied.                   │
300           ├───────┼────────────────────────────┤
301           │"+"    │ If the executable path is  │
302           │       │ prefixed with "+" then the │
303           │       │ process is executed with   │
304           │       │ full privileges. In this   │
305           │       │ mode privilege             │
306           │       │ restrictions configured    │
307           │       │ with User=, Group=,        │
308           │       │ CapabilityBoundingSet= or  │
309           │       │ the various file system    │
310           │       │ namespacing options (such  │
311           │       │ as PrivateDevices=,        │
312           │       │ PrivateTmp=) are not       │
313           │       │ applied to the invoked     │
314           │       │ command line (but still    │
315           │       │ affect any other           │
316           │       │ ExecStart=, ExecStop=, ... │
317           │       │ lines).                    │
318           ├───────┼────────────────────────────┤
319           │"!"    │ Similar to the "+"         │
320           │       │ character discussed above  │
321           │       │ this permits invoking      │
322           │       │ command lines with         │
323           │       │ elevated privileges.       │
324           │       │ However, unlike "+" the    │
325           │       │ "!" character exclusively  │
326           │       │ alters the effect of       │
327           │       │ User=, Group= and          │
328           │       │ SupplementaryGroups=, i.e. │
329           │       │ only the stanzas that      │
330           │       │ affect user and group      │
331           │       │ credentials. Note that     │
332           │       │ this setting may be        │
333           │       │ combined with              │
334           │       │ DynamicUser=, in which     │
335           │       │ case a dynamic user/group  │
336           │       │ pair is allocated before   │
337           │       │ the command is invoked,    │
338           │       │ but credential changing is │
339           │       │ left to the executed       │
340           │       │ process itself.            │
341           ├───────┼────────────────────────────┤
342           │"!!"   │ This prefix is very        │
343           │       │ similar to "!", however it │
344           │       │ only has an effect on      │
345           │       │ systems lacking support    │
346           │       │ for ambient process        │
347           │       │ capabilities, i.e. without │
348           │       │ support for                │
349           │       │ AmbientCapabilities=. It's │
350           │       │ intended to be used for    │
351           │       │ unit files that take       │
352           │       │ benefit of ambient         │
353           │       │ capabilities to run        │
354           │       │ processes with minimal     │
355           │       │ privileges wherever        │
356           │       │ possible while remaining   │
357           │       │ compatible with systems    │
358           │       │ that lack ambient          │
359           │       │ capabilities support. Note │
360           │       │ that when "!!" is used,    │
361           │       │ and a system lacking       │
362           │       │ ambient capability support │
363           │       │ is detected any configured │
364           │       │ SystemCallFilter= and      │
365           │       │ CapabilityBoundingSet=
366           │       │ stanzas are implicitly     │
367           │       │ modified, in order to      │
368           │       │ permit spawned processes   │
369           │       │ to drop credentials and    │
370           │       │ capabilities themselves,   │
371           │       │ even if this is configured │
372           │       │ to not be allowed.         │
373           │       │ Moreover, if this prefix   │
374           │       │ is used and a system       │
375           │       │ lacking ambient capability │
376           │       │ support is detected        │
377           │       │ AmbientCapabilities= will  │
378           │       │ be skipped and not be      │
379           │       │ applied. On systems        │
380           │       │ supporting ambient         │
381           │       │ capabilities, "!!" has no  │
382           │       │ effect and is redundant.   │
383           └───────┴────────────────────────────┘
384           "@", "-", ":", and one of "+"/"!"/"!!"  may be used together and
385           they can appear in any order. However, only one of "+", "!", "!!"
386           may be used at a time. Note that these prefixes are also supported
387           for the other command line settings, i.e.  ExecStartPre=,
388           ExecStartPost=, ExecReload=, ExecStop= and ExecStopPost=.
389
390           If more than one command is specified, the commands are invoked
391           sequentially in the order they appear in the unit file. If one of
392           the commands fails (and is not prefixed with "-"), other lines are
393           not executed, and the unit is considered failed.
394
395           Unless Type=forking is set, the process started via this command
396           line will be considered the main process of the daemon.
397
398       ExecStartPre=, ExecStartPost=
399           Additional commands that are executed before or after the command
400           in ExecStart=, respectively. Syntax is the same as for ExecStart=,
401           except that multiple command lines are allowed and the commands are
402           executed one after the other, serially.
403
404           If any of those commands (not prefixed with "-") fail, the rest are
405           not executed and the unit is considered failed.
406
407           ExecStart= commands are only run after all ExecStartPre= commands
408           that were not prefixed with a "-" exit successfully.
409
410           ExecStartPost= commands are only run after the commands specified
411           in ExecStart= have been invoked successfully, as determined by
412           Type= (i.e. the process has been started for Type=simple or
413           Type=idle, the last ExecStart= process exited successfully for
414           Type=oneshot, the initial process exited successfully for
415           Type=forking, "READY=1" is sent for Type=notify, or the BusName=
416           has been taken for Type=dbus).
417
418           Note that ExecStartPre= may not be used to start long-running
419           processes. All processes forked off by processes invoked via
420           ExecStartPre= will be killed before the next service process is
421           run.
422
423           Note that if any of the commands specified in ExecStartPre=,
424           ExecStart=, or ExecStartPost= fail (and are not prefixed with "-",
425           see above) or time out before the service is fully up, execution
426           continues with commands specified in ExecStopPost=, the commands in
427           ExecStop= are skipped.
428
429       ExecCondition=
430           Optional commands that are executed before the command(s) in
431           ExecStartPre=. Syntax is the same as for ExecStart=, except that
432           multiple command lines are allowed and the commands are executed
433           one after the other, serially.
434
435           The behavior is like an ExecStartPre= and condition check hybrid:
436           when an ExecCondition= command exits with exit code 1 through 254
437           (inclusive), the remaining commands are skipped and the unit is not
438           marked as failed. However, if an ExecCondition= command exits with
439           255 or abnormally (e.g. timeout, killed by a signal, etc.), the
440           unit will be considered failed (and remaining commands will be
441           skipped). Exit code of 0 or those matching SuccessExitStatus= will
442           continue execution to the next command(s).
443
444           The same recommendations about not running long-running processes
445           in ExecStartPre= also applies to ExecCondition=.  ExecCondition=
446           will also run the commands in ExecStopPost=, as part of stopping
447           the service, in the case of any non-zero or abnormal exits, like
448           the ones described above.
449
450       ExecReload=
451           Commands to execute to trigger a configuration reload in the
452           service. This argument takes multiple command lines, following the
453           same scheme as described for ExecStart= above. Use of this setting
454           is optional. Specifier and environment variable substitution is
455           supported here following the same scheme as for ExecStart=.
456
457           One additional, special environment variable is set: if known,
458           $MAINPID is set to the main process of the daemon, and may be used
459           for command lines like the following:
460
461               /bin/kill -HUP $MAINPID
462
463           Note however that reloading a daemon by sending a signal (as with
464           the example line above) is usually not a good choice, because this
465           is an asynchronous operation and hence not suitable to order
466           reloads of multiple services against each other. It is strongly
467           recommended to set ExecReload= to a command that not only triggers
468           a configuration reload of the daemon, but also synchronously waits
469           for it to complete.
470
471       ExecStop=
472           Commands to execute to stop the service started via ExecStart=.
473           This argument takes multiple command lines, following the same
474           scheme as described for ExecStart= above. Use of this setting is
475           optional. After the commands configured in this option are run, it
476           is implied that the service is stopped, and any processes remaining
477           for it are terminated according to the KillMode= setting (see
478           systemd.kill(5)). If this option is not specified, the process is
479           terminated by sending the signal specified in KillSignal= when
480           service stop is requested. Specifier and environment variable
481           substitution is supported (including $MAINPID, see above).
482
483           Note that it is usually not sufficient to specify a command for
484           this setting that only asks the service to terminate (for example,
485           by queuing some form of termination signal for it), but does not
486           wait for it to do so. Since the remaining processes of the services
487           are killed according to KillMode= and KillSignal= as described
488           above immediately after the command exited, this may not result in
489           a clean stop. The specified command should hence be a synchronous
490           operation, not an asynchronous one.
491
492           Note that the commands specified in ExecStop= are only executed
493           when the service started successfully first. They are not invoked
494           if the service was never started at all, or in case its start-up
495           failed, for example because any of the commands specified in
496           ExecStart=, ExecStartPre= or ExecStartPost= failed (and weren't
497           prefixed with "-", see above) or timed out. Use ExecStopPost= to
498           invoke commands when a service failed to start up correctly and is
499           shut down again. Also note that the stop operation is always
500           performed if the service started successfully, even if the
501           processes in the service terminated on their own or were killed.
502           The stop commands must be prepared to deal with that case.
503           $MAINPID will be unset if systemd knows that the main process
504           exited by the time the stop commands are called.
505
506           Service restart requests are implemented as stop operations
507           followed by start operations. This means that ExecStop= and
508           ExecStopPost= are executed during a service restart operation.
509
510           It is recommended to use this setting for commands that communicate
511           with the service requesting clean termination. For post-mortem
512           clean-up steps use ExecStopPost= instead.
513
514       ExecStopPost=
515           Additional commands that are executed after the service is stopped.
516           This includes cases where the commands configured in ExecStop= were
517           used, where the service does not have any ExecStop= defined, or
518           where the service exited unexpectedly. This argument takes multiple
519           command lines, following the same scheme as described for
520           ExecStart=. Use of these settings is optional. Specifier and
521           environment variable substitution is supported. Note that – unlike
522           ExecStop= – commands specified with this setting are invoked when a
523           service failed to start up correctly and is shut down again.
524
525           It is recommended to use this setting for clean-up operations that
526           shall be executed even when the service failed to start up
527           correctly. Commands configured with this setting need to be able to
528           operate even if the service failed starting up half-way and left
529           incompletely initialized data around. As the service's processes
530           have been terminated already when the commands specified with this
531           setting are executed they should not attempt to communicate with
532           them.
533
534           Note that all commands that are configured with this setting are
535           invoked with the result code of the service, as well as the main
536           process' exit code and status, set in the $SERVICE_RESULT,
537           $EXIT_CODE and $EXIT_STATUS environment variables, see
538           systemd.exec(5) for details.
539
540       RestartSec=
541           Configures the time to sleep before restarting a service (as
542           configured with Restart=). Takes a unit-less value in seconds, or a
543           time span value such as "5min 20s". Defaults to 100ms.
544
545       TimeoutStartSec=
546           Configures the time to wait for start-up. If a daemon service does
547           not signal start-up completion within the configured time, the
548           service will be considered failed and will be shut down again.
549           Takes a unit-less value in seconds, or a time span value such as
550           "5min 20s". Pass "infinity" to disable the timeout logic. Defaults
551           to DefaultTimeoutStartSec= from the manager configuration file,
552           except when Type=oneshot is used, in which case the timeout is
553           disabled by default (see systemd-system.conf(5)).
554
555           If a service of Type=notify sends "EXTEND_TIMEOUT_USEC=...", this
556           may cause the start time to be extended beyond TimeoutStartSec=.
557           The first receipt of this message must occur before
558           TimeoutStartSec= is exceeded, and once the start time has exended
559           beyond TimeoutStartSec=, the service manager will allow the service
560           to continue to start, provided the service repeats
561           "EXTEND_TIMEOUT_USEC=..."  within the interval specified until the
562           service startup status is finished by "READY=1". (see
563           sd_notify(3)).
564
565       TimeoutStopSec=
566           This option serves two purposes. First, it configures the time to
567           wait for each ExecStop= command. If any of them times out,
568           subsequent ExecStop= commands are skipped and the service will be
569           terminated by SIGTERM. If no ExecStop= commands are specified, the
570           service gets the SIGTERM immediately. Second, it configures the
571           time to wait for the service itself to stop. If it doesn't
572           terminate in the specified time, it will be forcibly terminated by
573           SIGKILL (see KillMode= in systemd.kill(5)). Takes a unit-less value
574           in seconds, or a time span value such as "5min 20s". Pass
575           "infinity" to disable the timeout logic. Defaults to
576           DefaultTimeoutStopSec= from the manager configuration file (see
577           systemd-system.conf(5)).
578
579           If a service of Type=notify sends "EXTEND_TIMEOUT_USEC=...", this
580           may cause the stop time to be extended beyond TimeoutStopSec=. The
581           first receipt of this message must occur before TimeoutStopSec= is
582           exceeded, and once the stop time has exended beyond
583           TimeoutStopSec=, the service manager will allow the service to
584           continue to stop, provided the service repeats
585           "EXTEND_TIMEOUT_USEC=..."  within the interval specified, or
586           terminates itself (see sd_notify(3)).
587
588       TimeoutAbortSec=
589           This option configures the time to wait for the service to
590           terminate when it was aborted due to a watchdog timeout (see
591           WatchdogSec=). If the service has a short TimeoutStopSec= this
592           option can be used to give the system more time to write a core
593           dump of the service. Upon expiration the service will be forcibly
594           terminated by SIGKILL (see KillMode= in systemd.kill(5)). The core
595           file will be truncated in this case. Use TimeoutAbortSec= to set a
596           sensible timeout for the core dumping per service that is large
597           enough to write all expected data while also being short enough to
598           handle the service failure in due time.
599
600           Takes a unit-less value in seconds, or a time span value such as
601           "5min 20s". Pass an empty value to skip the dedicated watchdog
602           abort timeout handling and fall back TimeoutStopSec=. Pass
603           "infinity" to disable the timeout logic. Defaults to
604           DefaultTimeoutAbortSec= from the manager configuration file (see
605           systemd-system.conf(5)).
606
607           If a service of Type=notify handles SIGABRT itself (instead of
608           relying on the kernel to write a core dump) it can send
609           "EXTEND_TIMEOUT_USEC=..."  to extended the abort time beyond
610           TimeoutAbortSec=. The first receipt of this message must occur
611           before TimeoutAbortSec= is exceeded, and once the abort time has
612           exended beyond TimeoutAbortSec=, the service manager will allow the
613           service to continue to abort, provided the service repeats
614           "EXTEND_TIMEOUT_USEC=..."  within the interval specified, or
615           terminates itself (see sd_notify(3)).
616
617       TimeoutSec=
618           A shorthand for configuring both TimeoutStartSec= and
619           TimeoutStopSec= to the specified value.
620
621       RuntimeMaxSec=
622           Configures a maximum time for the service to run. If this is used
623           and the service has been active for longer than the specified time
624           it is terminated and put into a failure state. Note that this
625           setting does not have any effect on Type=oneshot services, as they
626           terminate immediately after activation completed. Pass "infinity"
627           (the default) to configure no runtime limit.
628
629           If a service of Type=notify sends "EXTEND_TIMEOUT_USEC=...", this
630           may cause the runtime to be extended beyond RuntimeMaxSec=. The
631           first receipt of this message must occur before RuntimeMaxSec= is
632           exceeded, and once the runtime has exended beyond RuntimeMaxSec=,
633           the service manager will allow the service to continue to run,
634           provided the service repeats "EXTEND_TIMEOUT_USEC=..."  within the
635           interval specified until the service shutdown is achieved by
636           "STOPPING=1" (or termination). (see sd_notify(3)).
637
638       WatchdogSec=
639           Configures the watchdog timeout for a service. The watchdog is
640           activated when the start-up is completed. The service must call
641           sd_notify(3) regularly with "WATCHDOG=1" (i.e. the "keep-alive
642           ping"). If the time between two such calls is larger than the
643           configured time, then the service is placed in a failed state and
644           it will be terminated with SIGABRT (or the signal specified by
645           WatchdogSignal=). By setting Restart= to on-failure, on-watchdog,
646           on-abnormal or always, the service will be automatically restarted.
647           The time configured here will be passed to the executed service
648           process in the WATCHDOG_USEC= environment variable. This allows
649           daemons to automatically enable the keep-alive pinging logic if
650           watchdog support is enabled for the service. If this option is
651           used, NotifyAccess= (see below) should be set to open access to the
652           notification socket provided by systemd. If NotifyAccess= is not
653           set, it will be implicitly set to main. Defaults to 0, which
654           disables this feature. The service can check whether the service
655           manager expects watchdog keep-alive notifications. See
656           sd_watchdog_enabled(3) for details.  sd_event_set_watchdog(3) may
657           be used to enable automatic watchdog notification support.
658
659       Restart=
660           Configures whether the service shall be restarted when the service
661           process exits, is killed, or a timeout is reached. The service
662           process may be the main service process, but it may also be one of
663           the processes specified with ExecStartPre=, ExecStartPost=,
664           ExecStop=, ExecStopPost=, or ExecReload=. When the death of the
665           process is a result of systemd operation (e.g. service stop or
666           restart), the service will not be restarted. Timeouts include
667           missing the watchdog "keep-alive ping" deadline and a service
668           start, reload, and stop operation timeouts.
669
670           Takes one of no, on-success, on-failure, on-abnormal, on-watchdog,
671           on-abort, or always. If set to no (the default), the service will
672           not be restarted. If set to on-success, it will be restarted only
673           when the service process exits cleanly. In this context, a clean
674           exit means an exit code of 0, or one of the signals SIGHUP, SIGINT,
675           SIGTERM or SIGPIPE, and additionally, exit statuses and signals
676           specified in SuccessExitStatus=. If set to on-failure, the service
677           will be restarted when the process exits with a non-zero exit code,
678           is terminated by a signal (including on core dump, but excluding
679           the aforementioned four signals), when an operation (such as
680           service reload) times out, and when the configured watchdog timeout
681           is triggered. If set to on-abnormal, the service will be restarted
682           when the process is terminated by a signal (including on core dump,
683           excluding the aforementioned four signals), when an operation times
684           out, or when the watchdog timeout is triggered. If set to on-abort,
685           the service will be restarted only if the service process exits due
686           to an uncaught signal not specified as a clean exit status. If set
687           to on-watchdog, the service will be restarted only if the watchdog
688           timeout for the service expires. If set to always, the service will
689           be restarted regardless of whether it exited cleanly or not, got
690           terminated abnormally by a signal, or hit a timeout.
691
692           Table 2. Exit causes and the effect of the Restart= settings on
693           them
694           ┌──────────────┬────┬────────┬────────────┬────────────┬─────────────┬──────────┬─────────────┐
695Restart       no always on-success on-failure on-abnormal on-abort on-watchdog 
696settings/Exit │    │        │            │            │             │          │             │
697causes        │    │        │            │            │             │          │             │
698           ├──────────────┼────┼────────┼────────────┼────────────┼─────────────┼──────────┼─────────────┤
699           │Clean exit    │    │ X      │ X          │            │             │          │             │
700           │code or       │    │        │            │            │             │          │             │
701           │signal        │    │        │            │            │             │          │             │
702           ├──────────────┼────┼────────┼────────────┼────────────┼─────────────┼──────────┼─────────────┤
703           │Unclean exit  │    │ X      │            │ X          │             │          │             │
704           │code          │    │        │            │            │             │          │             │
705           ├──────────────┼────┼────────┼────────────┼────────────┼─────────────┼──────────┼─────────────┤
706           │Unclean       │    │ X      │            │ X          │ X           │ X        │             │
707           │signal        │    │        │            │            │             │          │             │
708           ├──────────────┼────┼────────┼────────────┼────────────┼─────────────┼──────────┼─────────────┤
709           │Timeout       │    │ X      │            │ X          │ X           │          │             │
710           ├──────────────┼────┼────────┼────────────┼────────────┼─────────────┼──────────┼─────────────┤
711           │Watchdog      │    │ X      │            │ X          │ X           │          │ X           │
712           └──────────────┴────┴────────┴────────────┴────────────┴─────────────┴──────────┴─────────────┘
713           As exceptions to the setting above, the service will not be
714           restarted if the exit code or signal is specified in
715           RestartPreventExitStatus= (see below) or the service is stopped
716           with systemctl stop or an equivalent operation. Also, the services
717           will always be restarted if the exit code or signal is specified in
718           RestartForceExitStatus= (see below).
719
720           Note that service restart is subject to unit start rate limiting
721           configured with StartLimitIntervalSec= and StartLimitBurst=, see
722           systemd.unit(5) for details. A restarted service enters the failed
723           state only after the start limits are reached.
724
725           Setting this to on-failure is the recommended choice for
726           long-running services, in order to increase reliability by
727           attempting automatic recovery from errors. For services that shall
728           be able to terminate on their own choice (and avoid immediate
729           restarting), on-abnormal is an alternative choice.
730
731       SuccessExitStatus=
732           Takes a list of exit status definitions that, when returned by the
733           main service process, will be considered successful termination, in
734           addition to the normal successful exit code 0 and the signals
735           SIGHUP, SIGINT, SIGTERM, and SIGPIPE. Exit status definitions can
736           be numeric exit codes, termination code names, or termination
737           signal names, separated by spaces. See the Process Exit Codes
738           section in systemd.exec(5) for a list of termination codes names
739           (for this setting only the part without the "EXIT_" or "EX_" prefix
740           should be used). See signal(7) for a list of signal names.
741
742           This option may appear more than once, in which case the list of
743           successful exit statuses is merged. If the empty string is assigned
744           to this option, the list is reset, all prior assignments of this
745           option will have no effect.
746
747           Example 1. A service with with the SuccessExitStatus= setting
748
749               SuccessExitStatus=TEMPFAIL 250 SIGUSR1
750
751           Exit codes 75 (TEMPFAIL), 250, and the termination signal SIGKILL
752           are considered clean service terminations.
753
754           Note: systemd-analyze exit-codes may be used to list exit codes and
755           translate between numerical code values and names.
756
757       RestartPreventExitStatus=
758           Takes a list of exit status definitions that, when returned by the
759           main service process, will prevent automatic service restarts,
760           regardless of the restart setting configured with Restart=. Exit
761           status definitions can either be numeric exit codes or termination
762           signal names, and are separated by spaces. Defaults to the empty
763           list, so that, by default, no exit status is excluded from the
764           configured restart logic. For example:
765
766               RestartPreventExitStatus=1 6 SIGABRT
767
768           ensures that exit codes 1 and 6 and the termination signal SIGABRT
769           will not result in automatic service restarting. This option may
770           appear more than once, in which case the list of restart-preventing
771           statuses is merged. If the empty string is assigned to this option,
772           the list is reset and all prior assignments of this option will
773           have no effect.
774
775           Note that this setting has no effect on processes configured via
776           ExecStartPre=, ExecStartPost=, ExecStop=, ExecStopPost= or
777           ExecReload=, but only on the main service process, i.e. either the
778           one invoked by ExecStart= or (depending on Type=, PIDFile=, ...)
779           the otherwise configured main process.
780
781       RestartForceExitStatus=
782           Takes a list of exit status definitions that, when returned by the
783           main service process, will force automatic service restarts,
784           regardless of the restart setting configured with Restart=. The
785           argument format is similar to RestartPreventExitStatus=.
786
787       RootDirectoryStartOnly=
788           Takes a boolean argument. If true, the root directory, as
789           configured with the RootDirectory= option (see systemd.exec(5) for
790           more information), is only applied to the process started with
791           ExecStart=, and not to the various other ExecStartPre=,
792           ExecStartPost=, ExecReload=, ExecStop=, and ExecStopPost= commands.
793           If false, the setting is applied to all configured commands the
794           same way. Defaults to false.
795
796       NonBlocking=
797           Set the O_NONBLOCK flag for all file descriptors passed via
798           socket-based activation. If true, all file descriptors >= 3 (i.e.
799           all except stdin, stdout, stderr), excluding those passed in via
800           the file descriptor storage logic (see FileDescriptorStoreMax= for
801           details), will have the O_NONBLOCK flag set and hence are in
802           non-blocking mode. This option is only useful in conjunction with a
803           socket unit, as described in systemd.socket(5) and has no effect on
804           file descriptors which were previously saved in the file-descriptor
805           store for example. Defaults to false.
806
807       NotifyAccess=
808           Controls access to the service status notification socket, as
809           accessible via the sd_notify(3) call. Takes one of none (the
810           default), main, exec or all. If none, no daemon status updates are
811           accepted from the service processes, all status update messages are
812           ignored. If main, only service updates sent from the main process
813           of the service are accepted. If exec, only service updates sent
814           from any of the main or control processes originating from one of
815           the Exec*= commands are accepted. If all, all services updates from
816           all members of the service's control group are accepted. This
817           option should be set to open access to the notification socket when
818           using Type=notify or WatchdogSec= (see above). If those options are
819           used but NotifyAccess= is not configured, it will be implicitly set
820           to main.
821
822           Note that sd_notify() notifications may be attributed to units
823           correctly only if either the sending process is still around at the
824           time PID 1 processes the message, or if the sending process is
825           explicitly runtime-tracked by the service manager. The latter is
826           the case if the service manager originally forked off the process,
827           i.e. on all processes that match main or exec. Conversely, if an
828           auxiliary process of the unit sends an sd_notify() message and
829           immediately exits, the service manager might not be able to
830           properly attribute the message to the unit, and thus will ignore
831           it, even if NotifyAccess=all is set for it.
832
833       Sockets=
834           Specifies the name of the socket units this service shall inherit
835           socket file descriptors from when the service is started. Normally,
836           it should not be necessary to use this setting, as all socket file
837           descriptors whose unit shares the same name as the service (subject
838           to the different unit name suffix of course) are passed to the
839           spawned process.
840
841           Note that the same socket file descriptors may be passed to
842           multiple processes simultaneously. Also note that a different
843           service may be activated on incoming socket traffic than the one
844           which is ultimately configured to inherit the socket file
845           descriptors. Or, in other words: the Service= setting of .socket
846           units does not have to match the inverse of the Sockets= setting of
847           the .service it refers to.
848
849           This option may appear more than once, in which case the list of
850           socket units is merged. Note that once set, clearing the list of
851           sockets again (for example, by assigning the empty string to this
852           option) is not supported.
853
854       FileDescriptorStoreMax=
855           Configure how many file descriptors may be stored in the service
856           manager for the service using sd_pid_notify_with_fds(3)'s
857           "FDSTORE=1" messages. This is useful for implementing services that
858           can restart after an explicit request or a crash without losing
859           state. Any open sockets and other file descriptors which should not
860           be closed during the restart may be stored this way. Application
861           state can either be serialized to a file in /run, or better, stored
862           in a memfd_create(2) memory file descriptor. Defaults to 0, i.e. no
863           file descriptors may be stored in the service manager. All file
864           descriptors passed to the service manager from a specific service
865           are passed back to the service's main process on the next service
866           restart. Any file descriptors passed to the service manager are
867           automatically closed when POLLHUP or POLLERR is seen on them, or
868           when the service is fully stopped and no job is queued or being
869           executed for it. If this option is used, NotifyAccess= (see above)
870           should be set to open access to the notification socket provided by
871           systemd. If NotifyAccess= is not set, it will be implicitly set to
872           main.
873
874       USBFunctionDescriptors=
875           Configure the location of a file containing USB FunctionFS[2]
876           descriptors, for implementation of USB gadget functions. This is
877           used only in conjunction with a socket unit with ListenUSBFunction=
878           configured. The contents of this file are written to the ep0 file
879           after it is opened.
880
881       USBFunctionStrings=
882           Configure the location of a file containing USB FunctionFS strings.
883           Behavior is similar to USBFunctionDescriptors= above.
884
885       OOMPolicy=
886           Configure the Out-Of-Memory (OOM) killer policy. On Linux, when
887           memory becomes scarce the kernel might decide to kill a running
888           process in order to free up memory and reduce memory pressure. This
889           setting takes one of continue, stop or kill. If set to continue and
890           a process of the service is killed by the kernel's OOM killer this
891           is logged but the service continues running. If set to stop the
892           event is logged but the service is terminated cleanly by the
893           service manager. If set to kill and one of the service's processes
894           is killed by the OOM killer the kernel is instructed to kill all
895           remaining processes of the service, too. Defaults to the setting
896           DefaultOOMPolicy= in system.conf(5) is set to, except for services
897           where Delegate= is turned on, where it defaults to continue.
898
899           Use the OOMScoreAdjust= setting to configure whether processes of
900           the unit shall be considered preferred or less preferred candidates
901           for process termination by the Linux OOM killer logic. See
902           systemd.exec(5) for details.
903
904       Check systemd.exec(5) and systemd.kill(5) for more settings.
905

COMMAND LINES

907       This section describes command line parsing and variable and specifier
908       substitutions for ExecStart=, ExecStartPre=, ExecStartPost=,
909       ExecReload=, ExecStop=, and ExecStopPost= options.
910
911       Multiple command lines may be concatenated in a single directive by
912       separating them with semicolons (these semicolons must be passed as
913       separate words). Lone semicolons may be escaped as "\;".
914
915       Each command line is split on whitespace, with the first item being the
916       command to execute, and the subsequent items being the arguments.
917       Double quotes ("...") and single quotes ('...') may be used to wrap a
918       whole item (the opening quote may appear only at the beginning or after
919       whitespace that is not quoted, and the closing quote must be followed
920       by whitespace or the end of line), in which case everything until the
921       next matching quote becomes part of the same argument. Quotes
922       themselves are removed. C-style escapes are also supported. The table
923       below contains the list of known escape patterns. Only escape patterns
924       which match the syntax in the table are allowed; other patterns may be
925       added in the future and unknown patterns will result in a warning. In
926       particular, any backslashes should be doubled. Finally, a trailing
927       backslash ("\") may be used to merge lines.
928
929       This syntax is inspired by shell syntax, but only the meta-characters
930       and expansions described in the following paragraphs are understood,
931       and the expansion of variables is different. Specifically, redirection
932       using "<", "<<", ">", and ">>", pipes using "|", running programs in
933       the background using "&", and other elements of shell syntax are not
934       supported.
935
936       The command to execute may contain spaces, but control characters are
937       not allowed.
938
939       The command line accepts "%" specifiers as described in
940       systemd.unit(5).
941
942       Basic environment variable substitution is supported. Use "${FOO}" as
943       part of a word, or as a word of its own, on the command line, in which
944       case it will be replaced by the value of the environment variable
945       including all whitespace it contains, resulting in a single argument.
946       Use "$FOO" as a separate word on the command line, in which case it
947       will be replaced by the value of the environment variable split at
948       whitespace, resulting in zero or more arguments. For this type of
949       expansion, quotes are respected when splitting into words, and
950       afterwards removed.
951
952       If the command is not a full (absolute) path, it will be resolved to a
953       full path using a fixed search path determinted at compilation time.
954       Searched directories include /usr/local/bin/, /usr/bin/, /bin/ on
955       systems using split /usr/bin/ and /bin/ directories, and their sbin/
956       counterparts on systems using split bin/ and sbin/. It is thus safe to
957       use just the executable name in case of executables located in any of
958       the "standard" directories, and an absolute path must be used in other
959       cases. Using an absolute path is recommended to avoid ambiguity. Hint:
960       this search path may be queried using systemd-path
961       search-binaries-default.
962
963       Example:
964
965           Environment="ONE=one" 'TWO=two two'
966           ExecStart=echo $ONE $TWO ${TWO}
967
968       This will execute /bin/echo with four arguments: "one", "two", "two",
969       and "two two".
970
971       Example:
972
973           Environment=ONE='one' "TWO='two two' too" THREE=
974           ExecStart=/bin/echo ${ONE} ${TWO} ${THREE}
975           ExecStart=/bin/echo $ONE $TWO $THREE
976
977       This results in /bin/echo being called twice, the first time with
978       arguments "'one'", "'two two' too", "", and the second time with
979       arguments "one", "two two", "too".
980
981       To pass a literal dollar sign, use "$$". Variables whose value is not
982       known at expansion time are treated as empty strings. Note that the
983       first argument (i.e. the program to execute) may not be a variable.
984
985       Variables to be used in this fashion may be defined through
986       Environment= and EnvironmentFile=. In addition, variables listed in the
987       section "Environment variables in spawned processes" in
988       systemd.exec(5), which are considered "static configuration", may be
989       used (this includes e.g.  $USER, but not $TERM).
990
991       Note that shell command lines are not directly supported. If shell
992       command lines are to be used, they need to be passed explicitly to a
993       shell implementation of some kind. Example:
994
995           ExecStart=sh -c 'dmesg | tac'
996
997       Example:
998
999           ExecStart=echo one ; echo "two two"
1000
1001       This will execute echo two times, each time with one argument: "one"
1002       and "two two", respectively. Because two commands are specified,
1003       Type=oneshot must be used.
1004
1005       Example:
1006
1007           ExecStart=echo / >/dev/null & \; \
1008           ls
1009
1010       This will execute echo with five arguments: "/", ">/dev/null", "&",
1011       ";", and "ls".
1012
1013       Table 3. C escapes supported in command lines and environment variables
1014       ┌────────┬─────────────────────────┐
1015Literal Actual value            
1016       ├────────┼─────────────────────────┤
1017       │"\a"    │ bell                    │
1018       ├────────┼─────────────────────────┤
1019       │"\b"    │ backspace               │
1020       ├────────┼─────────────────────────┤
1021       │"\f"    │ form feed               │
1022       ├────────┼─────────────────────────┤
1023       │"\n"    │ newline                 │
1024       ├────────┼─────────────────────────┤
1025       │"\r"    │ carriage return         │
1026       ├────────┼─────────────────────────┤
1027       │"\t"    │ tab                     │
1028       ├────────┼─────────────────────────┤
1029       │"\v"    │ vertical tab            │
1030       ├────────┼─────────────────────────┤
1031       │"\\"    │ backslash               │
1032       ├────────┼─────────────────────────┤
1033       │"\""    │ double quotation mark   │
1034       ├────────┼─────────────────────────┤
1035       │"\'"    │ single quotation mark   │
1036       ├────────┼─────────────────────────┤
1037       │"\s"    │ space                   │
1038       ├────────┼─────────────────────────┤
1039       │"\xxx"  │ character number xx in  │
1040       │        │ hexadecimal encoding    │
1041       ├────────┼─────────────────────────┤
1042       │"\nnn"  │ character number nnn in │
1043       │        │ octal encoding          │
1044       └────────┴─────────────────────────┘
1045

EXAMPLES

1047       Example 2. Simple service
1048
1049       The following unit file creates a service that will execute
1050       /usr/sbin/foo-daemon. Since no Type= is specified, the default
1051       Type=simple will be assumed. systemd will assume the unit to be started
1052       immediately after the program has begun executing.
1053
1054           [Unit]
1055           Description=Foo
1056
1057           [Service]
1058           ExecStart=/usr/sbin/foo-daemon
1059
1060           [Install]
1061           WantedBy=multi-user.target
1062
1063       Note that systemd assumes here that the process started by systemd will
1064       continue running until the service terminates. If the program
1065       daemonizes itself (i.e. forks), please use Type=forking instead.
1066
1067       Since no ExecStop= was specified, systemd will send SIGTERM to all
1068       processes started from this service, and after a timeout also SIGKILL.
1069       This behavior can be modified, see systemd.kill(5) for details.
1070
1071       Note that this unit type does not include any type of notification when
1072       a service has completed initialization. For this, you should use other
1073       unit types, such as Type=notify if the service understands systemd's
1074       notification protocol, Type=forking if the service can background
1075       itself or Type=dbus if the unit acquires a DBus name once
1076       initialization is complete. See below.
1077
1078       Example 3. Oneshot service
1079
1080       Sometimes, units should just execute an action without keeping active
1081       processes, such as a filesystem check or a cleanup action on boot. For
1082       this, Type=oneshot exists. Units of this type will wait until the
1083       process specified terminates and then fall back to being inactive. The
1084       following unit will perform a cleanup action:
1085
1086           [Unit]
1087           Description=Cleanup old Foo data
1088
1089           [Service]
1090           Type=oneshot
1091           ExecStart=/usr/sbin/foo-cleanup
1092
1093           [Install]
1094           WantedBy=multi-user.target
1095
1096       Note that systemd will consider the unit to be in the state "starting"
1097       until the program has terminated, so ordered dependencies will wait for
1098       the program to finish before starting themselves. The unit will revert
1099       to the "inactive" state after the execution is done, never reaching the
1100       "active" state. That means another request to start the unit will
1101       perform the action again.
1102
1103       Type=oneshot are the only service units that may have more than one
1104       ExecStart= specified. They will be executed in order until either they
1105       are all successful or one of them fails.
1106
1107       Example 4. Stoppable oneshot service
1108
1109       Similarly to the oneshot services, there are sometimes units that need
1110       to execute a program to set up something and then execute another to
1111       shut it down, but no process remains active while they are considered
1112       "started". Network configuration can sometimes fall into this category.
1113       Another use case is if a oneshot service shall not be executed each
1114       time when they are pulled in as a dependency, but only the first time.
1115
1116       For this, systemd knows the setting RemainAfterExit=yes, which causes
1117       systemd to consider the unit to be active if the start action exited
1118       successfully. This directive can be used with all types, but is most
1119       useful with Type=oneshot and Type=simple. With Type=oneshot, systemd
1120       waits until the start action has completed before it considers the unit
1121       to be active, so dependencies start only after the start action has
1122       succeeded. With Type=simple, dependencies will start immediately after
1123       the start action has been dispatched. The following unit provides an
1124       example for a simple static firewall.
1125
1126           [Unit]
1127           Description=Simple firewall
1128
1129           [Service]
1130           Type=oneshot
1131           RemainAfterExit=yes
1132           ExecStart=/usr/local/sbin/simple-firewall-start
1133           ExecStop=/usr/local/sbin/simple-firewall-stop
1134
1135           [Install]
1136           WantedBy=multi-user.target
1137
1138       Since the unit is considered to be running after the start action has
1139       exited, invoking systemctl start on that unit again will cause no
1140       action to be taken.
1141
1142       Example 5. Traditional forking services
1143
1144       Many traditional daemons/services background (i.e. fork, daemonize)
1145       themselves when starting. Set Type=forking in the service's unit file
1146       to support this mode of operation. systemd will consider the service to
1147       be in the process of initialization while the original program is still
1148       running. Once it exits successfully and at least a process remains (and
1149       RemainAfterExit=no), the service is considered started.
1150
1151       Often, a traditional daemon only consists of one process. Therefore, if
1152       only one process is left after the original process terminates, systemd
1153       will consider that process the main process of the service. In that
1154       case, the $MAINPID variable will be available in ExecReload=,
1155       ExecStop=, etc.
1156
1157       In case more than one process remains, systemd will be unable to
1158       determine the main process, so it will not assume there is one. In that
1159       case, $MAINPID will not expand to anything. However, if the process
1160       decides to write a traditional PID file, systemd will be able to read
1161       the main PID from there. Please set PIDFile= accordingly. Note that the
1162       daemon should write that file before finishing with its initialization.
1163       Otherwise, systemd might try to read the file before it exists.
1164
1165       The following example shows a simple daemon that forks and just starts
1166       one process in the background:
1167
1168           [Unit]
1169           Description=Some simple daemon
1170
1171           [Service]
1172           Type=forking
1173           ExecStart=/usr/sbin/my-simple-daemon -d
1174
1175           [Install]
1176           WantedBy=multi-user.target
1177
1178       Please see systemd.kill(5) for details on how you can influence the way
1179       systemd terminates the service.
1180
1181       Example 6. DBus services
1182
1183       For services that acquire a name on the DBus system bus, use Type=dbus
1184       and set BusName= accordingly. The service should not fork (daemonize).
1185       systemd will consider the service to be initialized once the name has
1186       been acquired on the system bus. The following example shows a typical
1187       DBus service:
1188
1189           [Unit]
1190           Description=Simple DBus service
1191
1192           [Service]
1193           Type=dbus
1194           BusName=org.example.simple-dbus-service
1195           ExecStart=/usr/sbin/simple-dbus-service
1196
1197           [Install]
1198           WantedBy=multi-user.target
1199
1200       For bus-activatable services, do not include a "[Install]" section in
1201       the systemd service file, but use the SystemdService= option in the
1202       corresponding DBus service file, for example
1203       (/usr/share/dbus-1/system-services/org.example.simple-dbus-service.service):
1204
1205           [D-BUS Service]
1206           Name=org.example.simple-dbus-service
1207           Exec=/usr/sbin/simple-dbus-service
1208           User=root
1209           SystemdService=simple-dbus-service.service
1210
1211       Please see systemd.kill(5) for details on how you can influence the way
1212       systemd terminates the service.
1213
1214       Example 7. Services that notify systemd about their initialization
1215
1216       Type=simple services are really easy to write, but have the major
1217       disadvantage of systemd not being able to tell when initialization of
1218       the given service is complete. For this reason, systemd supports a
1219       simple notification protocol that allows daemons to make systemd aware
1220       that they are done initializing. Use Type=notify for this. A typical
1221       service file for such a daemon would look like this:
1222
1223           [Unit]
1224           Description=Simple notifying service
1225
1226           [Service]
1227           Type=notify
1228           ExecStart=/usr/sbin/simple-notifying-service
1229
1230           [Install]
1231           WantedBy=multi-user.target
1232
1233       Note that the daemon has to support systemd's notification protocol,
1234       else systemd will think the service has not started yet and kill it
1235       after a timeout. For an example of how to update daemons to support
1236       this protocol transparently, take a look at sd_notify(3). systemd will
1237       consider the unit to be in the 'starting' state until a readiness
1238       notification has arrived.
1239
1240       Please see systemd.kill(5) for details on how you can influence the way
1241       systemd terminates the service.
1242

SEE ALSO

1244       systemd(1), systemctl(1), systemd-system.conf(5), systemd.unit(5),
1245       systemd.exec(5), systemd.resource-control(5), systemd.kill(5),
1246       systemd.directives(7), systemd-run(1)
1247

NOTES

1249        1. Incompatibilities with SysV
1250           https://www.freedesktop.org/wiki/Software/systemd/Incompatibilities
1251
1252        2. USB FunctionFS
1253           https://www.kernel.org/doc/Documentation/usb/functionfs.txt
1254
1255
1256
1257systemd 243                                                 SYSTEMD.SERVICE(5)
Impressum