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 auto-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 always, 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 miscutils/crond.c: logmode = LOGMODE_SYSLOG; networking/dnsd.c: logmode = LOGMODE_SYSLOG; networking/ftpd.c: logmode = LOGMODE_SYSLOG; 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 seem to never auto-background/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)