X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=man%2Fdaemon.xml;h=a23a04794b2a5e1cee35fe46f73cae8682c0704f;hb=06b643e7f5a3b79005dd57497897ab7255fe3659;hp=1fe4546f009519576fb2f8ec58e63e5b88f21a10;hpb=e0e009c067aa7237f9683c46e5845bbb11ec67c2;p=elogind.git
diff --git a/man/daemon.xml b/man/daemon.xml
index 1fe4546f0..a23a04794 100644
--- a/man/daemon.xml
+++ b/man/daemon.xml
@@ -74,8 +74,8 @@
Close all open file
- descriptors except STDIN, STDOUT,
- STDERR (i.e. the first three 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
@@ -128,8 +128,8 @@
In the daemon process,
connect /dev/null
- to STDIN, STDOUT,
- STDERR.
+ to standard input, output, and error.
+
In the daemon process,
reset the umask to 0, so that the file
@@ -149,7 +149,7 @@
write the daemon PID (as returned by
getpid()) to a
PID file, for example
- /var/run/foobar.pid
+ /run/foobar.pid
(for a hypothetical daemon "foobar")
to ensure that the daemon cannot be
started more than once. This must be
@@ -158,9 +158,7 @@
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. Commonly, some kind of
- file locking is employed to implement
- this logic.
+ foreign process.
In the daemon process,
drop privileges, if possible and
@@ -223,15 +221,16 @@
service.
Note that new-style init systems
- guarantee execution of daemon processes in
- a clean process context: it is guaranteed that
+ 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, and
- STDIN/STDOUT/STDERR connected to
+ will be executed in their own session, with
+ standard input/output/error connected to
/dev/null unless
- otherwise configured. The umask is reset.
+ otherwise configured. The umask is reset.
+
It is recommended for new-style daemons
to implement the following:
@@ -251,7 +250,7 @@
detect service errors and problems. It
is recommended to follow the exit code
scheme as defined in the LSB
+ url="http://refspecs.linuxbase.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/iniscrptact.html">LSB
recommendations for SysV init
scripts.
@@ -322,29 +321,21 @@
interface.
Instead of using the
- syslog() call to log directly to the
- system syslog service, a new-style daemon may
- choose to simply log to STDERR via
- fprintf(), which is then forwarded to
- syslog by the init system. If log
- priorities are necessary, these can be
- encoded by prefixing individual log
- lines with strings like "<4>"
- (for log priority 4 "WARNING" in the
- syslog priority scheme), following a
- similar style as the Linux kernel's
- printk() priority system. In fact,
- using this style of logging also
- enables the init system to optionally
- direct all application logging to the
- kernel log buffer (kmsg), as
- accessible via
- dmesg1. This
- kind of logging may be enabled by
- setting
- StandardError=syslog
- in the service unit file. For details,
- see
+ syslog() call to
+ log directly to the system syslog
+ service, a new-style daemon may choose
+ to simply log to standard error via
+ fprintf(), which
+ is then forwarded to syslog by the
+ init system. If log priorities are
+ necessary, these can be encoded by
+ prefixing individual log lines with
+ strings like "<4>" (for log
+ priority 4 "WARNING" in the syslog
+ priority scheme), following a similar
+ style as the Linux kernel's
+ printk() priority
+ system. For details, see
sd-daemon3
and
systemd.exec5.
@@ -353,7 +344,7 @@
These recommendations are similar but
not identical to the Apple
+ url="https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingLaunchdJobs.html">Apple
MacOS X Daemon Requirements.
@@ -394,7 +385,7 @@
exclusively on boot (and manually by the
administrator) via SysV init scripts, as
detailed in the LSB
+ url="http://refspecs.linuxbase.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/iniscrptact.html">LSB
Linux Standard Base Core
Specification. This method of
activation is supported ubiquitously on Linux
@@ -757,7 +748,7 @@
boot.
Packages using
- autoconf1
+ autoconf1
are recommended to use a configure script
excerpt like the following to determine the
unit installation path during source
@@ -765,12 +756,19 @@
PKG_PROG_PKG_CONFIG
AC_ARG_WITH([systemdsystemunitdir],
- AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]),
- [], [with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)])
-if test "x$with_systemdsystemunitdir" != xno; then
- AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])
-fi
-AM_CONDITIONAL(HAVE_SYSTEMD, [test -n "$with_systemdsystemunitdir" -a "x$with_systemdsystemunitdir" != xno ])
+ [AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files])],,
+ [with_systemdsystemunitdir=auto])
+AS_IF([test "x$with_systemdsystemunitdir" = "xyes" -o "x$with_systemdsystemunitdir" = "xauto"], [
+ def_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)
+
+ AS_IF([test "x$def_systemdsystemunitdir" = "x"],
+ [AS_IF([test "x$with_systemdsystemunitdir" = "xyes"],
+ [AC_MSG_ERROR([systemd support requested but pkg-config unable to query systemd package])])
+ with_systemdsystemunitdir=no],
+ [with_systemdsystemunitdir="$def_systemdsystemunitdir"])])
+AS_IF([test "x$with_systemdsystemunitdir" != "xno"],
+ [AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])])
+AM_CONDITIONAL([HAVE_SYSTEMD], [test "x$with_systemdsystemunitdir" != "xno"])
This snippet allows automatic
installation of the unit files on systemd
@@ -785,7 +783,7 @@ AM_CONDITIONAL(HAVE_SYSTEMD, [test -n "$with_systemdsystemunitdir" -a "x$with_sy
work, it is recommended to add the following
to the top-level Makefile.am
file in
- automake1-based
+ automake1-based
projects:
DISTCHECK_CONFIGURE_FLAGS = \
@@ -800,7 +798,7 @@ systemdsystemunit_DATA = \
endif
In the
- rpm8
+ rpm8
.spec file, use snippets
like the following to enable/disable the
service during
@@ -934,6 +932,14 @@ fi
+
+ Placing Daemon Data
+
+ It is recommended to follow the general
+ guidelines for placing package files, as discussed in
+ file-hierarchy7.
+
+
See Also
@@ -942,7 +948,8 @@ fi
sd_listen_fds3,
sd_notify3,
daemon3,
- systemd.service5
+ systemd.service5,
+ file-hierarchy7