From c3608471cd4f6808ed90d4185eda9424cf25e6ab Mon Sep 17 00:00:00 2001 From: Roy Marples Date: Wed, 2 May 2007 12:33:56 +0000 Subject: SSD_NICELEVEL can now affect the nicelevel for daemons started by start-stop-daemon, #175397. --- ChangeLog | 3 +++ conf.d/rc | 12 +++--------- man/start-stop-daemon.8 | 9 +++++---- src/librc-misc.c | 12 ++++++------ src/start-stop-daemon.c | 4 ++++ 5 files changed, 21 insertions(+), 19 deletions(-) diff --git a/ChangeLog b/ChangeLog index ff6945c..9f9f9d9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,9 @@ 02 May 2007; Roy Marples : + SSD_NICELEVEL can now affect the nicelevel for daemons started + by start-stop-daemon, #175397. + Don't delete addresses for PPP interfaces, #176764. 30 Apr 2007; Roy Marples : diff --git a/conf.d/rc b/conf.d/rc index 8ea03b4..9e3998c 100644 --- a/conf.d/rc +++ b/conf.d/rc @@ -74,15 +74,8 @@ RC_FORCE_AUTO="no" # really want them to work on a global basis. # Some daemons are started and stopped via start-stop-daemon. -# We can launch them through other daemons here, for example valgrind. -# This is only useful for serious debugging of the daemon -# WARNING: If the script's "stop" function does not supply a PID file then -# all processes using the same daemon will be killed. -#RC_DAEMON="/usr/bin/valgrind --tool=memcheck --log-file=/tmp/valgrind.syslog-ng" - -# strace needs to be prefixed with --background as it does not detach when -# it's following -#RC_DAEMON="--background /usr/sbin/strace -f -o /tmp/strace.syslog-ng" +# We can set some things on a per service basis, like the nicelevel. +#export SSD_NICELEVEL="-19" # Pass ulimit parameters #RC_ULIMIT="-u 30" @@ -91,3 +84,4 @@ RC_FORCE_AUTO="no" #RC_NEED="openvpn" #RC_USE="net.eth0" + diff --git a/man/start-stop-daemon.8 b/man/start-stop-daemon.8 index 0120395..ab9bc9c 100644 --- a/man/start-stop-daemon.8 +++ b/man/start-stop-daemon.8 @@ -200,16 +200,17 @@ will force to fork before starting the process, and force it into the background. .TP \fB-1\fP|\fB--stdout\fP \fIlogfile\fP -Redirect the standard output of the process to \fIlogfile\fP when started with \fB--background\fP. -Must be an absolute pathname, but relative to the \fIpath\fP optionally given with -\fB--chroot\fP. +Redirect the standard output of the process to \fIlogfile\fP when started with +\fB--background\fP. Must be an absolute pathname, but relative to the +\fIpath\fP optionally given with \fB--chroot\fP. Hint: The \fIlogfile\fP can also be a named pipe. .TP \fB-2\fP|\fB--stderr\fP \fIlogfile\fP The same thing as \fB--stdout\fP but with the standard error output. .TP .BR -N | --nicelevel -This alters the prority of the process before starting it. +This alters the prority of the process before starting it. This can also be set +by the environment variable \fBSSD_NICELEVEL\fR. .TP .BR -m | --make-pidfile Used when starting a program that does not create its own pid file. This diff --git a/src/librc-misc.c b/src/librc-misc.c index a2b38b4..36d9b31 100644 --- a/src/librc-misc.c +++ b/src/librc-misc.c @@ -6,14 +6,14 @@ #include "librc.h" -#define ERRX eerrorx("out of memory"); +#define ERRX eerrorx("out of memory"); -#define PROFILE_ENV "/etc/profile.env" -#define SYS_WHITELIST RC_LIBDIR "conf.d/env_whitelist" -#define USR_WHITELIST "/etc/conf.d/env_whitelist" -#define RC_CONFIG "/etc/conf.d/rc" +#define PROFILE_ENV "/etc/profile.env" +#define SYS_WHITELIST RC_LIBDIR "conf.d/env_whitelist" +#define USR_WHITELIST "/etc/conf.d/env_whitelist" +#define RC_CONFIG "/etc/conf.d/rc" -#define PATH_PREFIX RC_LIBDIR "bin:/bin:/sbin:/usr/bin:/usr/sbin" +#define PATH_PREFIX RC_LIBDIR "bin:/bin:/sbin:/usr/bin:/usr/sbin" #ifndef S_IXUGO # define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH) diff --git a/src/start-stop-daemon.c b/src/start-stop-daemon.c index f4f0f99..62973dc 100644 --- a/src/start-stop-daemon.c +++ b/src/start-stop-daemon.c @@ -537,6 +537,10 @@ int main (int argc, char **argv) signal (SIGQUIT, handle_signal); signal (SIGTERM, handle_signal); + if ((env = getenv ("SSD_NICELEVEL"))) + if (sscanf (env, "%d", &nicelevel) != 1) + eerror ("%s: invalid nice level `%s' (SSD_NICELEVEL)", progname, env); + while ((c = getopt_long (argc, argv, "KN:R:Sbc:d:g:mn:op:qs:tu:r:vx:1:2:", longopts, (int *) 0)) != -1) -- cgit v1.2.3