Debian's Init.d workaround for loading user's environment variables with start-stop-daemon
command.
Implies 2 running child, so the `stop` command usually needs a `KILL` instead of a `TERM` to close properly so I reduced it to 1 second to get quickly with the `KILL` signal.
This commit is contained in:
parent
f7de6d2b86
commit
98c719c342
1 changed files with 4 additions and 9 deletions
|
@ -31,11 +31,6 @@ USER=git
|
||||||
# Exit if the package is not installed
|
# Exit if the package is not installed
|
||||||
[ -x "$DAEMON" ] || exit 0
|
[ -x "$DAEMON" ] || exit 0
|
||||||
|
|
||||||
# Prepare the starting daemon command depending on available non-mandatory variables
|
|
||||||
STARTDEAMONEVALOPTS=""
|
|
||||||
[ ! -z "$USER" ] && STARTDEAMONEVALOPTS="$STARTDEAMONEVALOPTS --chuid $USER "
|
|
||||||
[ ! -z "$WORKINGDIR" ] && STARTDEAMONEVALOPTS="$STARTDEAMONEVALOPTS --chdir \"$WORKINGDIR\" "
|
|
||||||
|
|
||||||
# Load the VERBOSE setting and other rcS variables
|
# Load the VERBOSE setting and other rcS variables
|
||||||
. /lib/init/vars.sh
|
. /lib/init/vars.sh
|
||||||
|
|
||||||
|
@ -54,10 +49,10 @@ do_start()
|
||||||
# 1 if daemon was already running
|
# 1 if daemon was already running
|
||||||
# 2 if daemon could not be started
|
# 2 if daemon could not be started
|
||||||
sh -c "start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile \\
|
sh -c "start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile \\
|
||||||
$STARTDEAMONEVALOPTS --exec $DAEMON -- $DAEMON_ARGS --test > /dev/null \\
|
--exec $DAEMON -- $DAEMON_ARGS --test > /dev/null \\
|
||||||
|| return 1"
|
|| return 1"
|
||||||
sh -c "start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile \\
|
sh -c "start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile \\
|
||||||
$STARTDEAMONEVALOPTS --background --exec $DAEMON -- $DAEMON_ARGS \\
|
--background --exec /bin/su -- - $USER -c \"cd \\\"$WORKINGDIR\\\" && $DAEMON -- $DAEMON_ARGS\" \\
|
||||||
|| return 2"
|
|| return 2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,10 +66,10 @@ do_stop()
|
||||||
# 1 if daemon was already stopped
|
# 1 if daemon was already stopped
|
||||||
# 2 if daemon could not be stopped
|
# 2 if daemon could not be stopped
|
||||||
# other if a failure occurred
|
# other if a failure occurred
|
||||||
start-stop-daemon --stop --quiet --retry=TERM/10/KILL/5 --pidfile $PIDFILE --name $NAME
|
start-stop-daemon --stop --quiet --retry=TERM/1/KILL/5 --pidfile $PIDFILE --name $NAME
|
||||||
RETVAL="$?"
|
RETVAL="$?"
|
||||||
[ "$RETVAL" = 2 ] && return 2
|
[ "$RETVAL" = 2 ] && return 2
|
||||||
start-stop-daemon --stop --quiet --oknodo --retry=0/10/KILL/5 --exec $DAEMON
|
start-stop-daemon --stop --quiet --oknodo --retry=0/1/KILL/5 --exec $DAEMON
|
||||||
[ "$?" = 2 ] && return 2
|
[ "$?" = 2 ] && return 2
|
||||||
# Many daemons don't delete their pidfiles when they exit.
|
# Many daemons don't delete their pidfiles when they exit.
|
||||||
rm -f $PIDFILE
|
rm -f $PIDFILE
|
||||||
|
|
Reference in a new issue