1 | Logging and backgrounding
|
---|
2 |
|
---|
3 | By default, bb_[p]error_msg[_and_die] messages go to stderr,
|
---|
4 | and of course, usually applets do not auto-background. :)
|
---|
5 |
|
---|
6 | Historically, daemons and inetd services are different.
|
---|
7 |
|
---|
8 | Busybox is trying to provide compatible behavior, thus if an applet
|
---|
9 | is emulating an existing utility, it should mimic it. If utility
|
---|
10 | auto-backgrounds itself, busybox applet should do the same.
|
---|
11 | If utility normally logs to syslog, busybox applet should do
|
---|
12 | the same too.
|
---|
13 |
|
---|
14 | However, busybox should not needlessly restrict the freedom
|
---|
15 | of the users. And users have different needs and different preferences.
|
---|
16 | Some might like logging everything from daemons to syslog.
|
---|
17 | Others prefer running stuff under runsv/svlogd and thus would like
|
---|
18 | logging to stderr and no daemonization.
|
---|
19 |
|
---|
20 | To help with that, busybox applets should have options to override
|
---|
21 | default behavior, whatever that is for a given applet.
|
---|
22 |
|
---|
23 |
|
---|
24 | Current situation is a bit of a mess:
|
---|
25 |
|
---|
26 | acpid - auto-backgrounds unless -d
|
---|
27 | crond - auto-backgrounds unless -f, logs to syslog unless -d or -L.
|
---|
28 | option -d logs to stderr, -L FILE logs to FILE
|
---|
29 | devfsd - (obsolete)
|
---|
30 | dnsd - option -d makes it background and log to syslog
|
---|
31 | fakeidentd - inetd service. Auto-backgrounds and logs to syslog
|
---|
32 | if no -f and no -i and no -w (-i is "inetd service" flag,
|
---|
33 | -w is "inetd-wait service" flag)
|
---|
34 | ftpd - inetd service. Logs to syslog with -S, with -v logs to strerr too
|
---|
35 | httpd - auto-backgrounds unless -f or -i (-i is "inetd service" flag)
|
---|
36 | inetd - auto-backgrounds unless -f, logs to syslog unless -e
|
---|
37 | klogd - auto-backgrounds unless -n
|
---|
38 | syslogd - auto-backgrounds unless -n
|
---|
39 | telnetd - auto-backgrounds unless -f or -i (-i is "inetd service" flag)
|
---|
40 | udhcpc - auto-backgrounds unless -f after lease is obtained,
|
---|
41 | option -b makes it background sooner (when lease attempt
|
---|
42 | fails and retries start),
|
---|
43 | after backgrounding it stops logging to stderr;
|
---|
44 | logs to stderr, but option -S makes it log *also* to syslog
|
---|
45 | udhcpd - auto-backgrounds and do not log to stderr unless -f,
|
---|
46 | otherwise logs to stderr, but option -S makes it log *also* to syslog
|
---|
47 | zcip - auto-backgrounds and logs *also* to syslog unless -f
|
---|
48 |
|
---|
49 | Total: 13 applets (+1 obsolete),
|
---|
50 | 4 log to syslog by default (crond fakeidentd inetd zcip),
|
---|
51 | 5 never log to syslog (acpid httpd telnetd klogd syslogd, last two
|
---|
52 | - for obviously correct reasons),
|
---|
53 | there are no daemons which always log to syslog,
|
---|
54 | 12 auto-background if not run as inetd services (all except dnsd.
|
---|
55 | Note that there is no "standard" dnsd AFAIKS). But see below
|
---|
56 | for daemons (tcpsvd etc) which don't auto-background.
|
---|
57 |
|
---|
58 | miscutils/crond.c: logmode = LOGMODE_SYSLOG;
|
---|
59 | networking/dnsd.c: logmode = LOGMODE_SYSLOG;
|
---|
60 | networking/ftpd.c: logmode = LOGMODE_NONE;
|
---|
61 | networking/ftpd.c: logmode |= LOGMODE_SYSLOG;
|
---|
62 | networking/inetd.c: logmode = LOGMODE_SYSLOG;
|
---|
63 | networking/isrv_identd.c: logmode = LOGMODE_SYSLOG;
|
---|
64 | networking/telnetd.c: logmode = LOGMODE_SYSLOG;
|
---|
65 | networking/udhcp/dhcpc.c: logmode = LOGMODE_NONE;
|
---|
66 | networking/udhcp/dhcpc.c: logmode |= LOGMODE_SYSLOG;
|
---|
67 | networking/udhcp/dhcpc.c: logmode &= ~LOGMODE_STDIO;
|
---|
68 | networking/udhcp/dhcpd.c: logmode = LOGMODE_NONE;
|
---|
69 | networking/udhcp/dhcpd.c: logmode |= LOGMODE_SYSLOG;
|
---|
70 | networking/zcip.c: logmode |= LOGMODE_SYSLOG;
|
---|
71 |
|
---|
72 |
|
---|
73 | These daemons never auto-background and never log to syslog:
|
---|
74 |
|
---|
75 | lpd - inetd service. Has nothing to log so far, though
|
---|
76 | dhcprelay - standard behavior
|
---|
77 | inotifyd - standard behavior
|
---|
78 | runsv - standard behavior
|
---|
79 | runsvdir - standard behavior
|
---|
80 | svlogd - standard behavior
|
---|
81 | tcpsvd, udpsvd - standard behavior
|
---|
82 | tftpd - standard behavior
|
---|
83 |
|
---|
84 |
|
---|
85 | Non-daemons (seems to be use syslog for a good reason):
|
---|
86 |
|
---|
87 | networking/nameif.c: logmode |= LOGMODE_SYSLOG;
|
---|
88 | loginutils/chpasswd.c: logmode = LOGMODE_BOTH;
|
---|
89 | loginutils/chpasswd.c: logmode = LOGMODE_STDIO;
|
---|
90 | loginutils/getty.c: logmode = LOGMODE_BOTH;
|
---|
91 | loginutils/getty.c: logmode = LOGMODE_NONE;
|
---|
92 | loginutils/passwd.c: logmode = LOGMODE_STDIO;
|
---|
93 | loginutils/passwd.c: logmode = LOGMODE_BOTH;
|
---|
94 | loginutils/sulogin.c: logmode = LOGMODE_SYSLOG; (used if stdio isn't a tty)
|
---|
95 | loginutils/sulogin.c: logmode = LOGMODE_BOTH;
|
---|
96 | util-linux/mount.c: logmode = LOGMODE_SYSLOG; (used in a backgrounded NFS mount helper)
|
---|