chiark / gitweb /
doc: update punctuation
[elogind.git] / man / systemd.socket.xml
index 7c10c5858bb813df63b30ca7418edbea13651342..f495fe3666117e137c66139a5f1440b3db6d81d6 100644 (file)
                 which configure resource control settings for the
                 processes of the socket.</para>
 
-                <para>For each socket file a matching service file
-                (see
+                <para>For each socket file, a matching service file
+                must exist, describing the service to start on
+                incoming traffic on the socket (see
                 <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>
-                for details) must exist, describing the service to
-                start on incoming traffic on the socket. Depending on
-                the setting of <option>Accept=</option> (see below),
-                this must either be named like the socket unit, but
-                with the suffix replaced; or it must be a template
-                file named the same way. Example: a socket file
+                for more information about .service files). The name
+                of the .service unit is by default the same as the
+                name of the .socket unit, but can be altered with
+                <option>Service=</option> option described below.
+                Depending on the setting of <option>Accept=</option>
+                option described below, this .service unit must either
+                be named like the .socket unit, but with the suffix
+                replaced, unless overridden with
+                <option>Service=</option>; or it must be a template
+                unit named the same way. Example: a socket file
                 <filename>foo.socket</filename> needs a matching
                 service <filename>foo.service</filename> if
                 <option>Accept=false</option> is set. If
-                <option>Accept=true</option> is set, a service template
-                file <filename>foo@.service</filename> must exist from
-                which services are instantiated for each incoming
-                connection.</para>
+                <option>Accept=true</option> is set, a service
+                template file <filename>foo@.service</filename> must
+                exist from which services are instantiated for each
+                incoming connection.</para>
 
                 <para>Unless <varname>DefaultDependencies=</varname>
                 is set to <option>false</option>, socket units will
                 boot or late system shutdown should disable this
                 option.</para>
 
+                <para>Socket units will have a
+                <varname>Before=</varname> dependency on the service
+                which they trigger added implicitly. No implicit
+                <varname>WantedBy=</varname> or
+                <varname>RequiredBy=</varname> dependency from the
+                socket to the service is added. This means that the
+                service may be started without the socket, in which
+                case it must be able to open sockets by itself. To
+                prevent this, an explicit <varname>Requires=</varname>
+                dependency may be added.</para>
+
                 <para>Socket units may be used to implement on-demand
                 starting of services, as well as parallelized starting
-                of services.</para>
+                of services. See the blog stories linked at the end
+                for introduction.</para>
 
                 <para>Note that the daemon software configured for
                 socket activation with socket units needs to be able
                 <citerefentry><refentrytitle>sd_listen_fds</refentrytitle><manvolnum>3</manvolnum></citerefentry>
                 for details) or via the traditional
                 <citerefentry><refentrytitle>inetd</refentrytitle><manvolnum>8</manvolnum></citerefentry>-style
-                socket passing (i.e. sockets passed in via STDIN and
-                STDOUT, using <varname>StandardInput=socket</varname>
+                socket passing (i.e. sockets passed in via standard input and
+                output, using <varname>StandardInput=socket</varname>
                 in the service file).</para>
         </refsect1>
 
                                 traffic on any of the sockets will
                                 trigger service activation, and all
                                 listed sockets will be passed to the
-                                service, regardless whether there is
+                                service, regardless of whether there is
                                 incoming traffic on them or not. If
                                 the empty string is assigned to any of
                                 these options, the list of addresses
                                 of any of these options will have no
                                 effect.</para>
 
+                                <para>It is also possible to have more
+                                than one socket unit for the same
+                                service when using
+                                <varname>Service=</varname>, and the
+                                service will receive all the sockets
+                                configured in all the socket units.
+                                Sockets configured in one unit are
+                                passed in the order of configuration,
+                                but no ordering between socket units
+                                is specified.</para>
+
                                 <para>If an IP address is used here,
                                 it is often desirable to listen on it
                                 before the interface it is configured
                                 on is up and running, and even
-                                regardless whether it will be up and
-                                running ever at all. To deal with this
+                                regardless of whether it will be up and
+                                running at any point. To deal with this,
                                 it is recommended to set the
                                 <varname>FreeBind=</varname> option
                                 described below.</para></listitem>
                                 <term><varname>Service=</varname></term>
                                 <listitem><para>Specifies the service
                                 unit name to activate on incoming
-                                traffic. This defaults to the service
-                                that bears the same name as the socket
-                                (ignoring the different suffixes). In
-                                most cases it should not be necessary
-                                to use this option.</para></listitem>
+                                traffic. This setting is only allowed
+                                for sockets with
+                                <varname>Accept=no</varname>. It
+                                defaults to the service that bears the
+                                same name as the socket (with the
+                                suffix replaced). In most cases, it
+                                should not be necessary to use this
+                                option.</para></listitem>
                         </varlistentry>
 
                 </variablelist>