start-stop-daemon is used to control the creation and termination of system-level processes. Using one of the matching options, start-stop-daemon can be configured to find existing instances of a running process. Note: unless --pid or --pidfile are specified, start-stop-daemon behaves similar to killall(1).
To expand on ypocat's answer, since it won't let me comment:
start-stop-daemon --start --quiet --chuid $DAEMONUSER \
--make-pidfile --pidfile $PIDFILE --background \
--startas /bin/bash -- -c "exec $DAEMON $DAEMON_ARGS > /var/log/some.log 2>&1"
Using exec
to run the daemon allows stop to correctly stop the child process instead of just the bash parent.
Using --startas
instead of --exec
ensures that the process will be correctly detected by its pid and won't erroneously start multiple instances of the daemon if start is called multiple times. Otherwise, start-stop-daemon will look for a /bin/bash process and ignore the actual child process running the daemon.
You need to do:
start-stop-daemon --start --quiet --chuid $DAEMONUSER \
--make-pidfile --pidfile $PIDFILE --background \
--exec /bin/bash -- -c "$DAEMON $DAEMON_ARGS > /var/log/some.log 2>&1"
Also if you use --chuid
or --user
, make sure the user can write to /var/log
or the existing /var/log/some.log
. The best way is to have that user own a /var/log/subdir/
though.
It seems you should be able to use now the --no-close
parameter when starting start-stop-daemon
to capture the daemon output. This new feature is available in the dpkg
package since version 1.16.5 on Debian:
Add new --no-close option to disable closing fds on --background.
This enabled the caller to see process messages for debugging purposes, or to be able to redirect file descriptors to log files, syslog or similar.
With openrc (which is the default on gentoo or alpine linux for instance) start-stop-daemon
has the -1
and -2
options:
-1, --stdout Redirect stdout to file
-2, --stderr Redirect stderr to file
So you can just write:
start-stop-daemon --start --quiet --chuid $DAEMONUSER \
--make-pidfile --pidfile $PIDFILE --background \
--exec $DAEMON $DAEMON_ARGS -1 $LOGFILE -2 $LOGFILE
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With