From ddbdb696582e9fd61995f15d6a3a53055a151e41 Mon Sep 17 00:00:00 2001 From: Julien Reichardt Date: Mon, 20 Nov 2017 23:45:51 +0100 Subject: [PATCH] add more variables for start-stop-daemon and supervise-daemon options Add the following variables to expose more arguments that can be passed to start-stop-daemon or supervise-daemon: - directory will be passed to --chdir - error_log will be passed to --stderr - output_log will be passed to --stdout - umask will be passed to umask This is for #184. --- man/openrc-run.8 | 20 ++++++++++++++++++++ sh/start-stop-daemon.sh | 4 ++++ sh/supervise-daemon.sh | 4 ++++ 3 files changed, 28 insertions(+) diff --git a/man/openrc-run.8 b/man/openrc-run.8 index 3f4f7e81..e1db58bd 100644 --- a/man/openrc-run.8 +++ b/man/openrc-run.8 @@ -157,6 +157,24 @@ use this to change the user id before or .Xr supervise-daemon 8 launches the daemon +.It Ar output_log +This is the path to a file or named pipe where the standard output from +the service will be redirected. If you are starting this service with +.Xr start-stop-daemon 8 , +, you must set +.Pa command_background +to true. Keep in mind that this path will be inside the chroot if the +.Pa chroot +variable is set. +.It Ar error_log +The same thing as +.Pa output_log +but for the standard error output. +.It Ar directory +.Xr start-stop-daemon 8 +and +.Xr supervise-daemon 8 +will chdir to this directory before starting the daemon. .It Ar chroot .Xr start-stop-daemon 8 and @@ -201,6 +219,8 @@ used along with in_background_fake to support re-entrant services. .It Ar in_background_fake Space separated list of commands which should always succeed when in_background is yes. +.It Ar umask +Set the umask of the daemon. .Pp Keep in mind that eval is used to process chroot, command, command_args_*, command_user, pidfile and procname. This may affect how they are diff --git a/sh/start-stop-daemon.sh b/sh/start-stop-daemon.sh index 0793b19a..35c642c0 100644 --- a/sh/start-stop-daemon.sh +++ b/sh/start-stop-daemon.sh @@ -44,9 +44,13 @@ ssd_start() eval start-stop-daemon --start \ --exec $command \ ${chroot:+--chroot} $chroot \ + ${directory:+--chdir} $directory \ + ${output_log+--stdout} $output_log \ + ${error_log+--stderr} $error_log \ ${procname:+--name} $procname \ ${pidfile:+--pidfile} $pidfile \ ${command_user+--user} $command_user \ + ${umask+--umask} $umask \ $_background $start_stop_daemon_args \ -- $command_args $command_args_background if eend $? "Failed to start ${name:-$RC_SVCNAME}"; then diff --git a/sh/supervise-daemon.sh b/sh/supervise-daemon.sh index f6e599d5..b600b9c6 100644 --- a/sh/supervise-daemon.sh +++ b/sh/supervise-daemon.sh @@ -24,12 +24,16 @@ supervise_start() # to work properly. eval supervise-daemon "${RC_SVCNAME}" --start \ ${retry:+--retry} $retry \ + ${directory:+--chdir} $directory \ ${chroot:+--chroot} $chroot \ + ${output_log+--stdout} ${output_log} \ + ${error_log+--stderr} $error_log \ ${pidfile:+--pidfile} $pidfile \ ${respawn_delay:+--respawn-delay} $respawn_delay \ ${respawn_max:+--respawn-max} $respawn_max \ ${respawn_period:+--respawn-period} $respawn_period \ ${command_user+--user} $command_user \ + ${umask+--umask} $umask \ $supervise_daemon_args \ $command \ -- $command_args $command_args_foreground