summaryrefslogtreecommitdiff
path: root/release/src/router/busybox/docs/logging_and_backgrounding.txt
diff options
context:
space:
mode:
Diffstat (limited to 'release/src/router/busybox/docs/logging_and_backgrounding.txt')
-rw-r--r--release/src/router/busybox/docs/logging_and_backgrounding.txt96
1 files changed, 96 insertions, 0 deletions
diff --git a/release/src/router/busybox/docs/logging_and_backgrounding.txt b/release/src/router/busybox/docs/logging_and_backgrounding.txt
new file mode 100644
index 00000000..62a6d155
--- /dev/null
+++ b/release/src/router/busybox/docs/logging_and_backgrounding.txt
@@ -0,0 +1,96 @@
+ Logging and backgrounding
+
+By default, bb_[p]error_msg[_and_die] messages go to stderr,
+and of course, usually applets do not auto-background. :)
+
+Historically, daemons and inetd services are different.
+
+Busybox is trying to provide compatible behavior, thus if an applet
+is emulating an existing utility, it should mimic it. If utility
+auto-backgrounds itself, busybox applet should do the same.
+If utility normally logs to syslog, busybox applet should do
+the same too.
+
+However, busybox should not needlessly restrict the freedom
+of the users. And users have different needs and different preferences.
+Some might like logging everything from daemons to syslog.
+Others prefer running stuff under runsv/svlogd and thus would like
+logging to stderr and no daemonization.
+
+To help with that, busybox applets should have options to override
+default behavior, whatever that is for a given applet.
+
+
+Current sutiation is a bit of a mess:
+
+acpid - auto-backgrounds unless -d
+crond - auto-backgrounds unless -f, logs to syslog unless -d or -L.
+ option -d logs to stderr, -L FILE logs to FILE
+devfsd - (obsolete)
+dnsd - option -d makes it background and log to syslog
+fakeidentd - inetd service. Auto-backgrounds and logs to syslog
+ if no -f and no -i and no -w (-i is "inetd service" flag,
+ -w is "inetd-wait service" flag)
+ftpd - inetd service. Logs to syslog with -S, with -v logs to strerr too
+httpd - auto-backgrounds unless -f or -i (-i is "inetd service" flag)
+inetd - auto-backgrounds unless -f, logs to syslog unless -e
+klogd - auto-backgrounds unless -n
+syslogd - auto-backgrounds unless -n
+telnetd - auto-backgrounds unless -f or -i (-i is "inetd service" flag)
+udhcpc - auto-backgrounds unless -f after lease is obtained,
+ option -b makes it background sooner (when lease attempt
+ fails and retries start),
+ after backgrounding it stops logging to stderr;
+ logs to stderr, but option -S makes it log *also* to syslog
+udhcpd - auto-backgrounds and do not log to stderr unless -f,
+ otherwise logs to stderr, but option -S makes it log *also* to syslog
+zcip - auto-backgrounds and logs *also* to syslog unless -f
+
+Total: 13 applets (+1 obsolete),
+ 4 log to syslog by default (crond fakeidentd inetd zcip),
+ 5 never log to syslog (acpid httpd telnetd klogd syslogd, last two
+ - for obviously correct reasons),
+ there are no daemons which always log to syslog,
+ 12 auto-background if not run as inetd servies (all except dnsd.
+ Note that there is no "standard" dnsd AFAIKS). But see below
+ for daemons (tcpsvd etc) which don't auto-background.
+
+miscutils/crond.c: logmode = LOGMODE_SYSLOG;
+networking/dnsd.c: logmode = LOGMODE_SYSLOG;
+networking/ftpd.c: logmode = LOGMODE_NONE;
+networking/ftpd.c: logmode |= LOGMODE_SYSLOG;
+networking/inetd.c: logmode = LOGMODE_SYSLOG;
+networking/isrv_identd.c: logmode = LOGMODE_SYSLOG;
+networking/telnetd.c: logmode = LOGMODE_SYSLOG;
+networking/udhcp/dhcpc.c: logmode = LOGMODE_NONE;
+networking/udhcp/dhcpc.c: logmode |= LOGMODE_SYSLOG;
+networking/udhcp/dhcpc.c: logmode &= ~LOGMODE_STDIO;
+networking/udhcp/dhcpd.c: logmode = LOGMODE_NONE;
+networking/udhcp/dhcpd.c: logmode |= LOGMODE_SYSLOG;
+networking/zcip.c: logmode |= LOGMODE_SYSLOG;
+
+
+These daemons never auto-background and never log to syslog:
+
+lpd - inetd service. Has nothing to log so far, though
+dhcprelay - standard behavior
+inotifyd - standard behavior
+runsv - standard behavior
+runsvdir - standard behavior
+svlogd - standard behavior
+tcpsvd, udpsvd - standard behavior
+tftpd - standard behavior
+
+
+Non-daemons (seems to be use syslog for a good reason):
+
+networking/nameif.c: logmode |= LOGMODE_SYSLOG;
+loginutils/chpasswd.c: logmode = LOGMODE_BOTH;
+loginutils/chpasswd.c: logmode = LOGMODE_STDIO;
+loginutils/getty.c: logmode = LOGMODE_BOTH;
+loginutils/getty.c: logmode = LOGMODE_NONE;
+loginutils/passwd.c: logmode = LOGMODE_STDIO;
+loginutils/passwd.c: logmode = LOGMODE_BOTH;
+loginutils/sulogin.c: logmode = LOGMODE_SYSLOG; (used if stdio isn't a tty)
+loginutils/sulogin.c: logmode = LOGMODE_BOTH;
+util-linux/mount.c: logmode = LOGMODE_SYSLOG; (used in a backgrounded NFS mount helper)