diff options
Diffstat (limited to '')
-rw-r--r-- | templates/man7/daemon.7.pot | 1319 |
1 files changed, 1319 insertions, 0 deletions
diff --git a/templates/man7/daemon.7.pot b/templates/man7/daemon.7.pot new file mode 100644 index 00000000..88eb7c31 --- /dev/null +++ b/templates/man7/daemon.7.pot @@ -0,0 +1,1319 @@ +# SOME DESCRIPTIVE TITLE +# Copyright (C) YEAR Free Software Foundation, Inc. +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-03-01 16:54+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. type: TH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "DAEMON" +msgstr "" + +#. type: TH +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#, no-wrap +msgid "systemd 255" +msgstr "" + +#. type: TH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "daemon" +msgstr "" + +#. ----------------------------------------------------------------- +#. * MAIN CONTENT STARTS HERE * +#. ----------------------------------------------------------------- +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "NAME" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "daemon - Writing and packaging system daemons" +msgstr "" + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "DESCRIPTION" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"A daemon is a service process that runs in the background and supervises the " +"system or provides functionality to other processes\\&. Traditionally, " +"daemons are implemented following a scheme originating in SysV Unix\\&. " +"Modern daemons should follow a simpler yet more powerful scheme (here called " +"\"new-style\" daemons), as implemented by B<systemd>(1)\\&. This manual page " +"covers both schemes, and in particular includes recommendations for daemons " +"that shall be included in the systemd init system\\&." +msgstr "" + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "SysV Daemons" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When a traditional SysV daemon starts, it should execute the following steps " +"as part of the initialization\\&. Note that these steps are unnecessary for " +"new-style daemons (see below), and should only be implemented if " +"compatibility with SysV is essential\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Close all open file descriptors except standard input, output, and error " +"(i\\&.e\\&. the first three file descriptors 0, 1, 2)\\&. This ensures that " +"no accidentally passed file descriptor stays around in the daemon " +"process\\&. On Linux, this is best implemented by iterating through /proc/" +"self/fd, with a fallback of iterating from file descriptor 3 to the value " +"returned by B<getrlimit()> for B<RLIMIT_NOFILE>\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Reset all signal handlers to their default\\&. This is best done by " +"iterating through the available signals up to the limit of B<_NSIG> and " +"resetting them to B<SIG_DFL>\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Reset the signal mask using B<sigprocmask()>\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Sanitize the environment block, removing or resetting environment variables " +"that might negatively impact daemon runtime\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Call B<fork()>, to create a background process\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"In the child, call B<setsid()> to detach from any terminal and create an " +"independent session\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"In the child, call B<fork()> again, to ensure that the daemon can never re-" +"acquire a terminal again\\&. (This relevant if the program \\(em and all its " +"dependencies \\(em does not carefully specify `O_NOCTTY` on each and every " +"single `open()` call that might potentially open a TTY device node\\&.)" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Call B<exit()> in the first child, so that only the second child (the actual " +"daemon process) stays around\\&. This ensures that the daemon process is re-" +"parented to init/PID 1, as all daemons should be\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"In the daemon process, connect /dev/null to standard input, output, and " +"error\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"In the daemon process, reset the umask to 0, so that the file modes passed " +"to B<open()>, B<mkdir()> and suchlike directly control the access mode of " +"the created files and directories\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"In the daemon process, change the current directory to the root directory " +"(/), in order to avoid that the daemon involuntarily blocks mount points " +"from being unmounted\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"In the daemon process, write the daemon PID (as returned by B<getpid()>) to " +"a PID file, for example /run/foobar\\&.pid (for a hypothetical daemon " +"\"foobar\") to ensure that the daemon cannot be started more than once\\&. " +"This must be implemented in race-free fashion so that the PID file is only " +"updated when it is verified at the same time that the PID previously stored " +"in the PID file no longer exists or belongs to a foreign process\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "In the daemon process, drop privileges, if possible and applicable\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"From the daemon process, notify the original process started that " +"initialization is complete\\&. This can be implemented via an unnamed pipe " +"or similar communication channel that is created before the first B<fork()> " +"and hence available in both the original and the daemon process\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Call B<exit()> in the original process\\&. The process that invoked the " +"daemon must be able to rely on that this B<exit()> happens after " +"initialization is complete and all external communication channels are " +"established and accessible\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The BSD B<daemon()> function should not be used, as it implements only a " +"subset of these steps\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"A daemon that needs to provide compatibility with SysV systems should " +"implement the scheme pointed out above\\&. However, it is recommended to " +"make this behavior optional and configurable via a command line argument to " +"ease debugging as well as to simplify integration into systems using " +"systemd\\&." +msgstr "" + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "New-Style Daemons" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Modern services for Linux should be implemented as new-style daemons\\&. " +"This makes it easier to supervise and control them at runtime and simplifies " +"their implementation\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +msgid "" +"For developing a new-style daemon, none of the initialization steps " +"recommended for SysV daemons need to be implemented\\&. New-style init " +"systems such as systemd make all of them redundant\\&. Moreover, since some " +"of these steps interfere with process monitoring, file descriptor passing, " +"and other functionality of the service manager, it is recommended not to " +"execute them when run as new-style service\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Note that new-style init systems guarantee execution of daemon processes in " +"a clean process context: it is guaranteed that the environment block is " +"sanitized, that the signal handlers and mask is reset and that no left-over " +"file descriptors are passed\\&. Daemons will be executed in their own " +"session, with standard input connected to /dev/null and standard output/" +"error connected to the B<systemd-journald.service>(8) logging service, " +"unless otherwise configured\\&. The umask is reset\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "It is recommended for new-style daemons to implement the following:" +msgstr "" + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +msgid "" +"If applicable, the daemon should notify the service manager about startup " +"completion or status updates via the B<sd_notify>(3) interface, in " +"particular I<READY=1> and I<STATUS=\\&...>\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +msgid "" +"If B<SIGTERM> is received, shut down the daemon and exit cleanly\\&. A " +"I<STOPPING=1> notification should be sent via B<sd_notify>(3)\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +msgid "" +"If B<SIGHUP> is received, reload the configuration files, if this " +"applies\\&. This should be combined with notifications via B<sd_notify>(3): " +"I<RELOADING=1> and I<READY=1>\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +msgid "" +"Provide a correct exit code from the main daemon process, as this is used by " +"the service manager to detect service errors and problems\\&. It is " +"recommended to follow the exit code scheme as defined in the \\m[blue]B<LSB " +"recommendations for SysV init scripts>\\m[]\\&\\s-2\\u[1]\\d\\s+2\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If possible and applicable, expose the daemon\\*(Aqs control interface via " +"the D-Bus IPC system and grab a bus name as last step of initialization\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"For integration in systemd, provide a \\&.service unit file that carries " +"information about starting, stopping and otherwise maintaining the " +"daemon\\&. See B<systemd.service>(5) for details\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +msgid "" +"As much as possible, rely on the service manager\\*(Aqs functionality to " +"limit the access of the daemon to files, services, and other resources, i\\&." +"e\\&. in the case of systemd, rely on systemd\\*(Aqs resource limit control " +"instead of implementing your own, rely on systemd\\*(Aqs privilege dropping " +"code instead of implementing it in the daemon, and so on\\&. See B<systemd." +"exec>(5) for the available controls\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If D-Bus is used, make your daemon bus-activatable by supplying a D-Bus " +"service activation configuration file\\&. This has multiple advantages: your " +"daemon may be started lazily on-demand; it may be started in parallel to " +"other daemons requiring it \\(em which maximizes parallelization and boot-up " +"speed; your daemon can be restarted on failure without losing any bus " +"requests, as the bus queues requests for activatable services\\&. See below " +"for details\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If your daemon provides services to other local processes or remote clients " +"via a socket, it should be made socket-activatable following the scheme " +"pointed out below\\&. Like D-Bus activation, this enables on-demand starting " +"of services as well as it allows improved parallelization of service start-" +"up\\&. Also, for state-less protocols (such as syslog, DNS), a daemon " +"implementing socket-based activation can be restarted without losing a " +"single request\\&. See below for details\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +msgid "" +"If the service opens sockets or other files on it own, and those file " +"descriptors shall survive a restart, the daemon should store them in the " +"service manager via B<sd_notify>(3) with I<FDSTORE=1>\\&.\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +msgid "" +"Instead of using the B<syslog()> call to log directly to the system syslog " +"service, a new-style daemon may choose to simply log to standard error via " +"B<fprintf()>, which is then forwarded to syslog\\&. If log levels are " +"necessary, these can be encoded by prefixing individual log lines with " +"strings like \"E<lt>4E<gt>\" (for log level 4 \"WARNING\" in the syslog " +"priority scheme), following a similar style as the Linux kernel\\*(Aqs " +"B<printk()> level system\\&. For details, see B<sd-daemon>(3) and B<systemd." +"exec>(5)\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +msgid "" +"As new-style daemons are invoked without a controlling TTY (but as their own " +"session leaders) care should be taken to always specify B<O_NOCTTY> on " +"B<open>(2) calls that possibly reference a TTY device node, so that no " +"controlling TTY is accidentally acquired\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"These recommendations are similar but not identical to the \\m[blue]B<Apple " +"MacOS X Daemon Requirements>\\m[]\\&\\s-2\\u[2]\\d\\s+2\\&." +msgstr "" + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "ACTIVATION" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"New-style init systems provide multiple additional mechanisms to activate " +"services, as detailed below\\&. It is common that services are configured to " +"be activated via more than one mechanism at the same time\\&. An example for " +"systemd: bluetoothd\\&.service might get activated either when Bluetooth " +"hardware is plugged in, or when an application accesses its programming " +"interfaces via D-Bus\\&. Or, a print server daemon might get activated when " +"traffic arrives at an IPP port, or when a printer is plugged in, or when a " +"file is queued in the printer spool directory\\&. Even for services that are " +"intended to be started on system bootup unconditionally, it is a good idea " +"to implement some of the various activation schemes outlined below, in order " +"to maximize parallelization\\&. If a daemon implements a D-Bus service or " +"listening socket, implementing the full bus and socket activation scheme " +"allows starting of the daemon with its clients in parallel (which speeds up " +"boot-up), since all its communication channels are established already, and " +"no request is lost because client requests will be queued by the bus system " +"(in case of D-Bus) or the kernel (in case of sockets) until the activation " +"is completed\\&." +msgstr "" + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Activation on Boot" +msgstr "" + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +msgid "" +"Old-style daemons are usually activated exclusively on boot (and manually by " +"the administrator) via SysV init scripts, as detailed in the \\m[blue]B<LSB " +"Linux Standard Base Core Specification>\\m[]\\&\\s-2\\u[1]\\d\\s+2\\&. This " +"method of activation is supported ubiquitously on Linux init systems, both " +"old-style and new-style systems\\&. Among other issues, SysV init scripts " +"have the disadvantage of involving shell scripts in the boot process\\&. New-" +"style init systems generally use updated versions of activation, both during " +"boot-up and during runtime and using more minimal service description " +"files\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"In systemd, if the developer or administrator wants to make sure that a " +"service or other unit is activated automatically on boot, it is recommended " +"to place a symlink to the unit file in the \\&.wants/ directory of either " +"multi-user\\&.target or graphical\\&.target, which are normally used as boot " +"targets at system startup\\&. See B<systemd.unit>(5) for details about the " +"\\&.wants/ directories, and B<systemd.special>(7) for details about the two " +"boot targets\\&." +msgstr "" + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Socket-Based Activation" +msgstr "" + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +msgid "" +"In order to maximize the possible parallelization and robustness and " +"simplify configuration and development, it is recommended for all new-style " +"daemons that communicate via listening sockets to use socket-based " +"activation\\&. In a socket-based activation scheme, the creation and binding " +"of the listening socket as primary communication channel of daemons to local " +"(and sometimes remote) clients is moved out of the daemon code and into the " +"service manager\\&. Based on per-daemon configuration, the service manager " +"installs the sockets and then hands them off to the spawned process as soon " +"as the respective daemon is to be started\\&. Optionally, activation of the " +"service can be delayed until the first inbound traffic arrives at the socket " +"to implement on-demand activation of daemons\\&. However, the primary " +"advantage of this scheme is that all providers and all consumers of the " +"sockets can be started in parallel as soon as all sockets are " +"established\\&. In addition to that, daemons can be restarted with losing " +"only a minimal number of client transactions, or even any client request at " +"all (the latter is particularly true for state-less protocols, such as DNS " +"or syslog), because the socket stays bound and accessible during the " +"restart, and all requests are queued while the daemon cannot process them\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +msgid "" +"New-style daemons which support socket activation must be able to receive " +"their sockets from the service manager instead of creating and binding them " +"themselves\\&. For details about the programming interfaces for this scheme " +"provided by systemd, see B<sd_listen_fds>(3) and B<sd-daemon>(3)\\&. For " +"details about porting existing daemons to socket-based activation, see " +"below\\&. With minimal effort, it is possible to implement socket-based " +"activation in addition to traditional internal socket creation in the same " +"codebase in order to support both new-style and old-style init systems from " +"the same daemon binary\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"systemd implements socket-based activation via \\&.socket units, which are " +"described in B<systemd.socket>(5)\\&. When configuring socket units for " +"socket-based activation, it is essential that all listening sockets are " +"pulled in by the special target unit sockets\\&.target\\&. It is recommended " +"to place a I<WantedBy=sockets\\&.target> directive in the [Install] section " +"to automatically add such a dependency on installation of a socket unit\\&. " +"Unless I<DefaultDependencies=no> is set, the necessary ordering dependencies " +"are implicitly created for all socket units\\&. For more information about " +"sockets\\&.target, see B<systemd.special>(7)\\&. It is not necessary or " +"recommended to place any additional dependencies on socket units (for " +"example from multi-user\\&.target or suchlike) when one is installed in " +"sockets\\&.target\\&." +msgstr "" + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Bus-Based Activation" +msgstr "" + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +msgid "" +"When the D-Bus IPC system is used for communication with clients, new-style " +"daemons should use bus activation so that they are automatically activated " +"when a client application accesses their IPC interfaces\\&. This is " +"configured in D-Bus service files (not to be confused with systemd service " +"unit files!)\\&. To ensure that D-Bus uses systemd to start-up and maintain " +"the daemon, use the I<SystemdService=> directive in these service files to " +"configure the matching systemd service for a D-Bus service\\&. e\\&.g\\&.: " +"For a D-Bus service whose D-Bus activation file is named org\\&." +"freedesktop\\&.RealtimeKit\\&.service, make sure to set " +"I<SystemdService=rtkit-daemon\\&.service> in that file to bind it to the " +"systemd service rtkit-daemon\\&.service\\&. This is needed to make sure that " +"the daemon is started in a race-free fashion when activated via multiple " +"mechanisms simultaneously\\&." +msgstr "" + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Device-Based Activation" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Often, daemons that manage a particular type of hardware should be activated " +"only when the hardware of the respective kind is plugged in or otherwise " +"becomes available\\&. In a new-style init system, it is possible to bind " +"activation to hardware plug/unplug events\\&. In systemd, kernel devices " +"appearing in the sysfs/udev device tree can be exposed as units if they are " +"tagged with the string \"systemd\"\\&. Like any other kind of unit, they may " +"then pull in other units when activated (i\\&.e\\&. plugged in) and thus " +"implement device-based activation\\&. systemd dependencies may be encoded in " +"the udev database via the I<SYSTEMD_WANTS=> property\\&. See B<systemd." +"device>(5) for details\\&. Often, it is nicer to pull in services from " +"devices only indirectly via dedicated targets\\&. Example: Instead of " +"pulling in bluetoothd\\&.service from all the various bluetooth dongles and " +"other hardware available, pull in bluetooth\\&.target from them and " +"bluetoothd\\&.service from that target\\&. This provides for nicer " +"abstraction and gives administrators the option to enable bluetoothd\\&." +"service via controlling a bluetooth\\&.target\\&.wants/ symlink uniformly " +"with a command like B<enable> of B<systemctl>(1) instead of manipulating " +"the udev ruleset\\&." +msgstr "" + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Path-Based Activation" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Often, runtime of daemons processing spool files or directories (such as a " +"printing system) can be delayed until these file system objects change " +"state, or become non-empty\\&. New-style init systems provide a way to bind " +"service activation to file system changes\\&. systemd implements this scheme " +"via path-based activation configured in \\&.path units, as outlined in " +"B<systemd.path>(5)\\&." +msgstr "" + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Timer-Based Activation" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Some daemons that implement clean-up jobs that are intended to be executed " +"in regular intervals benefit from timer-based activation\\&. In systemd, " +"this is implemented via \\&.timer units, as described in B<systemd." +"timer>(5)\\&." +msgstr "" + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Other Forms of Activation" +msgstr "" + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +msgid "" +"Other forms of activation have been suggested and implemented in some " +"systems\\&. However, there are often simpler or better alternatives, or they " +"can be put together of combinations of the schemes above\\&. Example: " +"Sometimes, it appears useful to start daemons or \\&.socket units when a " +"specific IP address is configured on a network interface, because network " +"sockets shall be bound to the address\\&. However, an alternative to " +"implement this is by utilizing the Linux B<IP_FREEBIND>/B<IPV6_FREEBIND> " +"socket option, as accessible via I<FreeBind=yes> in systemd socket files " +"(see B<systemd.socket>(5) for details)\\&. This option, when enabled, " +"allows sockets to be bound to a non-local, not configured IP address, and " +"hence allows bindings to a particular IP address before it actually becomes " +"available, making such an explicit dependency to the configured address " +"redundant\\&. Another often suggested trigger for service activation is low " +"system load\\&. However, here too, a more convincing approach might be to " +"make proper use of features of the operating system, in particular, the CPU " +"or I/O scheduler of Linux\\&. Instead of scheduling jobs from userspace " +"based on monitoring the OS scheduler, it is advisable to leave the " +"scheduling of processes to the OS scheduler itself\\&. systemd provides fine-" +"grained access to the CPU and I/O schedulers\\&. If a process executed by " +"the service manager shall not negatively impact the amount of CPU or I/O " +"bandwidth available to other processes, it should be configured with " +"I<CPUSchedulingPolicy=idle> and/or I<IOSchedulingClass=idle>\\&. Optionally, " +"this may be combined with timer-based activation to schedule background jobs " +"during runtime and with minimal impact on the system, and remove it from the " +"boot phase itself\\&." +msgstr "" + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "INTEGRATION WITH SYSTEMD" +msgstr "" + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Writing systemd Unit Files" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When writing systemd unit files, it is recommended to consider the following " +"suggestions:" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If possible, do not use the I<Type=forking> setting in service files\\&. But " +"if you do, make sure to set the PID file path using I<PIDFile=>\\&. See " +"B<systemd.service>(5) for details\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If your daemon registers a D-Bus name on the bus, make sure to use " +"I<Type=dbus> in the service file if possible\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Make sure to set a good human-readable description string with " +"I<Description=>\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Do not disable I<DefaultDependencies=>, unless you really know what you do " +"and your unit is involved in early boot or late system shutdown\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Normally, little if any dependencies should need to be defined " +"explicitly\\&. However, if you do configure explicit dependencies, only " +"refer to unit names listed on B<systemd.special>(7) or names introduced by " +"your own package to keep the unit file operating system-independent\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Make sure to include an [Install] section including installation information " +"for the unit file\\&. See B<systemd.unit>(5) for details\\&. To activate " +"your service on boot, make sure to add a I<WantedBy=multi-user\\&.target> or " +"I<WantedBy=graphical\\&.target> directive\\&. To activate your socket on " +"boot, make sure to add I<WantedBy=sockets\\&.target>\\&. Usually, you also " +"want to make sure that when your service is installed, your socket is " +"installed too, hence add I<Also=foo\\&.socket> in your service file foo\\&." +"service, for a hypothetical program foo\\&." +msgstr "" + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Installing systemd Service Files" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"At the build installation time (e\\&.g\\&. B<make install> during package " +"build), packages are recommended to install their systemd unit files in the " +"directory returned by B<pkg-config systemd --variable=systemdsystemunitdir> " +"(for system services) or B<pkg-config systemd --variable=systemduserunitdir> " +"(for user services)\\&. This will make the services available in the system " +"on explicit request but not activate them automatically during boot\\&. " +"Optionally, during package installation (e\\&.g\\&. B<rpm -i> by the " +"administrator), symlinks should be created in the systemd configuration " +"directories via the B<enable> command of the B<systemctl>(1) tool to " +"activate them automatically on boot\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Packages using B<autoconf>(1) are recommended to use a configure script " +"excerpt like the following to determine the unit installation path during " +"source configuration:" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "" +"PKG_PROG_PKG_CONFIG()\n" +"AC_ARG_WITH([systemdsystemunitdir],\n" +" [AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files])],,\n" +" [with_systemdsystemunitdir=auto])\n" +"AS_IF([test \"x$with_systemdsystemunitdir\" = \"xyes\" -o \"x$with_systemdsystemunitdir\" = \"xauto\"], [\n" +" def_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)\n" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "" +" AS_IF([test \"x$def_systemdsystemunitdir\" = \"x\"],\n" +" [AS_IF([test \"x$with_systemdsystemunitdir\" = \"xyes\"],\n" +" [AC_MSG_ERROR([systemd support requested but pkg-config unable to query systemd package])])\n" +" with_systemdsystemunitdir=no],\n" +" [with_systemdsystemunitdir=\"$def_systemdsystemunitdir\"])])\n" +"AS_IF([test \"x$with_systemdsystemunitdir\" != \"xno\"],\n" +" [AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])])\n" +"AM_CONDITIONAL([HAVE_SYSTEMD], [test \"x$with_systemdsystemunitdir\" != \"xno\"])\n" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"This snippet allows automatic installation of the unit files on systemd " +"machines, and optionally allows their installation even on machines lacking " +"systemd\\&. (Modification of this snippet for the user unit directory is " +"left as an exercise for the reader\\&.)" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Additionally, to ensure that B<make distcheck> continues to work, it is " +"recommended to add the following to the top-level Makefile\\&.am file in " +"B<automake>(1)-based projects:" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "" +"AM_DISTCHECK_CONFIGURE_FLAGS = \\e\n" +" --with-systemdsystemunitdir=$$dc_install_base/$(systemdsystemunitdir)\n" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Finally, unit files should be installed in the system with an automake " +"excerpt like the following:" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "" +"if HAVE_SYSTEMD\n" +"systemdsystemunit_DATA = \\e\n" +" foobar\\&.socket \\e\n" +" foobar\\&.service\n" +"endif\n" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"In the B<rpm>(8) \\&.spec file, use snippets like the following to enable/" +"disable the service during installation/deinstallation\\&. This makes use of " +"the RPM macros shipped along systemd\\&. Consult the packaging guidelines of " +"your distribution for details and the equivalent for other package " +"managers\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "At the top of the file:" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "" +"BuildRequires: systemd\n" +"%{?systemd_requires}\n" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "And as scriptlets, further down:" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "" +"%post\n" +"%systemd_post foobar\\&.service foobar\\&.socket\n" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "" +"%preun\n" +"%systemd_preun foobar\\&.service foobar\\&.socket\n" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "" +"%postun\n" +"%systemd_postun\n" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If the service shall be restarted during upgrades, replace the \"%postun\" " +"scriptlet above with the following:" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "" +"%postun\n" +"%systemd_postun_with_restart foobar\\&.service\n" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Note that \"%systemd_post\" and \"%systemd_preun\" expect the names of all " +"units that are installed/removed as arguments, separated by spaces\\&. " +"\"%systemd_postun\" expects no arguments\\&. " +"\"%systemd_postun_with_restart\" expects the units to restart as " +"arguments\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"To facilitate upgrades from a package version that shipped only SysV init " +"scripts to a package version that ships both a SysV init script and a native " +"systemd service file, use a fragment like the following:" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "" +"%triggerun -- foobar E<lt> 0\\&.47\\&.11-1\n" +"if /sbin/chkconfig --level 5 foobar ; then\n" +" /bin/systemctl --no-reload enable foobar\\&.service foobar\\&.socket E<gt>/dev/null 2E<gt>&1 || :\n" +"fi\n" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Where 0\\&.47\\&.11-1 is the first package version that includes the native " +"unit file\\&. This fragment will ensure that the first time the unit file is " +"installed, it will be enabled if and only if the SysV init script is " +"enabled, thus making sure that the enable status is not changed\\&. Note " +"that B<chkconfig> is a command specific to Fedora which can be used to check " +"whether a SysV init script is enabled\\&. Other operating systems will have " +"to use different commands here\\&." +msgstr "" + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "PORTING EXISTING DAEMONS" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Since new-style init systems such as systemd are compatible with traditional " +"SysV init systems, it is not strictly necessary to port existing daemons to " +"the new style\\&. However, doing so offers additional functionality to the " +"daemons as well as simplifying integration into new-style init systems\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"To port an existing SysV compatible daemon, the following steps are " +"recommended:" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If not already implemented, add an optional command line switch to the " +"daemon to disable daemonization\\&. This is useful not only for using the " +"daemon in new-style init systems, but also to ease debugging\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +msgid "" +"If the daemon offers interfaces to other software running on the local " +"system via local B<AF_UNIX> sockets, consider implementing socket-based " +"activation (see above)\\&. Usually, a minimal patch is sufficient to " +"implement this: Extend the socket creation in the daemon code so that " +"B<sd_listen_fds>(3) is checked for already passed sockets first\\&. If " +"sockets are passed (i\\&.e\\&. when B<sd_listen_fds()> returns a positive " +"value), skip the socket creation step and use the passed sockets\\&. " +"Secondly, ensure that the file system socket nodes for local B<AF_UNIX> " +"sockets used in the socket-based activation are not removed when the daemon " +"shuts down, if sockets have been passed\\&. Third, if the daemon normally " +"closes all remaining open file descriptors as part of its initialization, " +"the sockets passed from the service manager must be spared\\&. Since new-" +"style init systems guarantee that no left-over file descriptors are passed " +"to executed processes, it might be a good choice to simply skip the closing " +"of all remaining open file descriptors if sockets are passed\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Write and install a systemd unit file for the service (and the sockets if " +"socket-based activation is used, as well as a path unit file, if the daemon " +"processes a spool directory), see above for details\\&." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If the daemon exposes interfaces via D-Bus, write and install a D-Bus " +"activation file for the service, see above for details\\&." +msgstr "" + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "PLACING DAEMON DATA" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"It is recommended to follow the general guidelines for placing package " +"files, as discussed in B<file-hierarchy>(7)\\&." +msgstr "" + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "SEE ALSO" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"B<systemd>(1), B<sd-daemon>(3), B<sd_listen_fds>(3), B<sd_notify>(3), " +"B<daemon>(3), B<systemd.service>(5), B<file-hierarchy>(7)" +msgstr "" + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "NOTES" +msgstr "" + +#. type: IP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid " 1." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "LSB recommendations for SysV init scripts" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"\\%http://refspecs.linuxbase.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/" +"iniscrptact.html" +msgstr "" + +#. type: IP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid " 2." +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Apple MacOS X Daemon Requirements" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"\\%https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/" +"BPSystemStartup/Chapters/CreatingLaunchdJobs.html" +msgstr "" + +#. type: TH +#: debian-bookworm opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "systemd 254" +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"For developing a new-style daemon, none of the initialization steps " +"recommended for SysV daemons need to be implemented\\&. New-style init " +"systems such as systemd make all of them redundant\\&. Moreover, since some " +"of these steps interfere with process monitoring, file descriptor passing " +"and other functionality of the init system, it is recommended not to execute " +"them when run as new-style service\\&." +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 opensuse-tumbleweed +msgid "If B<SIGTERM> is received, shut down the daemon and exit cleanly\\&." +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If B<SIGHUP> is received, reload the configuration files, if this applies\\&." +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Provide a correct exit code from the main daemon process, as this is used by " +"the init system to detect service errors and problems\\&. It is recommended " +"to follow the exit code scheme as defined in the \\m[blue]B<LSB " +"recommendations for SysV init scripts>\\m[]\\&\\s-2\\u[1]\\d\\s+2\\&." +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"As much as possible, rely on the init system\\*(Aqs functionality to limit " +"the access of the daemon to files, services and other resources, i\\&.e\\&. " +"in the case of systemd, rely on systemd\\*(Aqs resource limit control " +"instead of implementing your own, rely on systemd\\*(Aqs privilege dropping " +"code instead of implementing it in the daemon, and similar\\&. See B<systemd." +"exec>(5) for the available controls\\&." +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If applicable, a daemon should notify the init system about startup " +"completion or status updates via the B<sd_notify>(3) interface\\&." +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Instead of using the B<syslog()> call to log directly to the system syslog " +"service, a new-style daemon may choose to simply log to standard error via " +"B<fprintf()>, which is then forwarded to syslog by the init system\\&. If " +"log levels are necessary, these can be encoded by prefixing individual log " +"lines with strings like \"E<lt>4E<gt>\" (for log level 4 \"WARNING\" in the " +"syslog priority scheme), following a similar style as the Linux " +"kernel\\*(Aqs B<printk()> level system\\&. For details, see B<sd-daemon>(3) " +"and B<systemd.exec>(5)\\&." +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"As new-style daemons are invoked without a controlling TTY (but as their own " +"session leaders) care should be taken to always specify `O_NOCTTY` on " +"`open()` calls that possibly reference a TTY device node, so that no " +"controlling TTY is accidentally acquired\\&." +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Old-style daemons are usually activated exclusively on boot (and manually by " +"the administrator) via SysV init scripts, as detailed in the \\m[blue]B<LSB " +"Linux Standard Base Core Specification>\\m[]\\&\\s-2\\u[1]\\d\\s+2\\&. This " +"method of activation is supported ubiquitously on Linux init systems, both " +"old-style and new-style systems\\&. Among other issues, SysV init scripts " +"have the disadvantage of involving shell scripts in the boot process\\&. New-" +"style init systems generally employ updated versions of activation, both " +"during boot-up and during runtime and using more minimal service description " +"files\\&." +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"In order to maximize the possible parallelization and robustness and " +"simplify configuration and development, it is recommended for all new-style " +"daemons that communicate via listening sockets to employ socket-based " +"activation\\&. In a socket-based activation scheme, the creation and binding " +"of the listening socket as primary communication channel of daemons to local " +"(and sometimes remote) clients is moved out of the daemon code and into the " +"init system\\&. Based on per-daemon configuration, the init system installs " +"the sockets and then hands them off to the spawned process as soon as the " +"respective daemon is to be started\\&. Optionally, activation of the service " +"can be delayed until the first inbound traffic arrives at the socket to " +"implement on-demand activation of daemons\\&. However, the primary advantage " +"of this scheme is that all providers and all consumers of the sockets can be " +"started in parallel as soon as all sockets are established\\&. In addition " +"to that, daemons can be restarted with losing only a minimal number of " +"client transactions, or even any client request at all (the latter is " +"particularly true for state-less protocols, such as DNS or syslog), because " +"the socket stays bound and accessible during the restart, and all requests " +"are queued while the daemon cannot process them\\&." +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"New-style daemons which support socket activation must be able to receive " +"their sockets from the init system instead of creating and binding them " +"themselves\\&. For details about the programming interfaces for this scheme " +"provided by systemd, see B<sd_listen_fds>(3) and B<sd-daemon>(3)\\&. For " +"details about porting existing daemons to socket-based activation, see " +"below\\&. With minimal effort, it is possible to implement socket-based " +"activation in addition to traditional internal socket creation in the same " +"codebase in order to support both new-style and old-style init systems from " +"the same daemon binary\\&." +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When the D-Bus IPC system is used for communication with clients, new-style " +"daemons should employ bus activation so that they are automatically " +"activated when a client application accesses their IPC interfaces\\&. This " +"is configured in D-Bus service files (not to be confused with systemd " +"service unit files!)\\&. To ensure that D-Bus uses systemd to start-up and " +"maintain the daemon, use the I<SystemdService=> directive in these service " +"files to configure the matching systemd service for a D-Bus service\\&. e\\&." +"g\\&.: For a D-Bus service whose D-Bus activation file is named org\\&." +"freedesktop\\&.RealtimeKit\\&.service, make sure to set " +"I<SystemdService=rtkit-daemon\\&.service> in that file to bind it to the " +"systemd service rtkit-daemon\\&.service\\&. This is needed to make sure that " +"the daemon is started in a race-free fashion when activated via multiple " +"mechanisms simultaneously\\&." +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Other forms of activation have been suggested and implemented in some " +"systems\\&. However, there are often simpler or better alternatives, or they " +"can be put together of combinations of the schemes above\\&. Example: " +"Sometimes, it appears useful to start daemons or \\&.socket units when a " +"specific IP address is configured on a network interface, because network " +"sockets shall be bound to the address\\&. However, an alternative to " +"implement this is by utilizing the Linux B<IP_FREEBIND>/B<IPV6_FREEBIND> " +"socket option, as accessible via I<FreeBind=yes> in systemd socket files " +"(see B<systemd.socket>(5) for details)\\&. This option, when enabled, " +"allows sockets to be bound to a non-local, not configured IP address, and " +"hence allows bindings to a particular IP address before it actually becomes " +"available, making such an explicit dependency to the configured address " +"redundant\\&. Another often suggested trigger for service activation is low " +"system load\\&. However, here too, a more convincing approach might be to " +"make proper use of features of the operating system, in particular, the CPU " +"or I/O scheduler of Linux\\&. Instead of scheduling jobs from userspace " +"based on monitoring the OS scheduler, it is advisable to leave the " +"scheduling of processes to the OS scheduler itself\\&. systemd provides fine-" +"grained access to the CPU and I/O schedulers\\&. If a process executed by " +"the init system shall not negatively impact the amount of CPU or I/O " +"bandwidth available to other processes, it should be configured with " +"I<CPUSchedulingPolicy=idle> and/or I<IOSchedulingClass=idle>\\&. Optionally, " +"this may be combined with timer-based activation to schedule background jobs " +"during runtime and with minimal impact on the system, and remove it from the " +"boot phase itself\\&." +msgstr "" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If the daemon offers interfaces to other software running on the local " +"system via local B<AF_UNIX> sockets, consider implementing socket-based " +"activation (see above)\\&. Usually, a minimal patch is sufficient to " +"implement this: Extend the socket creation in the daemon code so that " +"B<sd_listen_fds>(3) is checked for already passed sockets first\\&. If " +"sockets are passed (i\\&.e\\&. when B<sd_listen_fds()> returns a positive " +"value), skip the socket creation step and use the passed sockets\\&. " +"Secondly, ensure that the file system socket nodes for local B<AF_UNIX> " +"sockets used in the socket-based activation are not removed when the daemon " +"shuts down, if sockets have been passed\\&. Third, if the daemon normally " +"closes all remaining open file descriptors as part of its initialization, " +"the sockets passed from the init system must be spared\\&. Since new-style " +"init systems guarantee that no left-over file descriptors are passed to " +"executed processes, it might be a good choice to simply skip the closing of " +"all remaining open file descriptors if sockets are passed\\&." +msgstr "" |