Pārlūkot izejas kodu

package/busybox: tidy up S01syslogd init script

The manual refers to this script as a reference of how init scripts
should be written. The changes are:

* Use long form options for start-stop-daemon for clarity
* Use --exec on stop to ensure the right process gets stopped
* Avoid --quiet for clearer messages on failure
* Wait for the process to be gone during stop
* Avoid fixed wait between start and stop on restart

Signed-off-by: Fiona Klute (WIWA) <fiona.klute@gmx.de>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Fiona Klute (WIWA) 1 gadu atpakaļ
vecāks
revīzija
3dc8061444
1 mainītis faili ar 10 papildinājumiem un 5 dzēšanām
  1. 10 5
      package/busybox/S01syslogd

+ 10 - 5
package/busybox/S01syslogd

@@ -9,11 +9,12 @@ SYSLOGD_ARGS=""
 [ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON"
 [ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON"
 
 
 # BusyBox' syslogd does not create a pidfile, so pass "-n" in the command line
 # BusyBox' syslogd does not create a pidfile, so pass "-n" in the command line
-# and use "-m" to instruct start-stop-daemon to create one.
+# and use "--make-pidfile" to instruct start-stop-daemon to create one.
 start() {
 start() {
 	printf 'Starting %s: ' "$DAEMON"
 	printf 'Starting %s: ' "$DAEMON"
 	# shellcheck disable=SC2086 # we need the word splitting
 	# shellcheck disable=SC2086 # we need the word splitting
-	start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "/sbin/$DAEMON" \
+	start-stop-daemon --start --background --make-pidfile \
+		--pidfile "$PIDFILE" --exec "/sbin/$DAEMON" \
 		-- -n $SYSLOGD_ARGS
 		-- -n $SYSLOGD_ARGS
 	status=$?
 	status=$?
 	if [ "$status" -eq 0 ]; then
 	if [ "$status" -eq 0 ]; then
@@ -26,20 +27,24 @@ start() {
 
 
 stop() {
 stop() {
 	printf 'Stopping %s: ' "$DAEMON"
 	printf 'Stopping %s: ' "$DAEMON"
-	start-stop-daemon -K -q -p "$PIDFILE"
+	start-stop-daemon --stop --pidfile "$PIDFILE" --exec "/sbin/$DAEMON"
 	status=$?
 	status=$?
 	if [ "$status" -eq 0 ]; then
 	if [ "$status" -eq 0 ]; then
-		rm -f "$PIDFILE"
 		echo "OK"
 		echo "OK"
 	else
 	else
 		echo "FAIL"
 		echo "FAIL"
+		return "$status"
 	fi
 	fi
+	while start-stop-daemon --stop --test --quiet --pidfile "$PIDFILE" \
+		--exec "/sbin/$DAEMON"; do
+		sleep 0.1
+	done
+	rm -f "$PIDFILE"
 	return "$status"
 	return "$status"
 }
 }
 
 
 restart() {
 restart() {
 	stop
 	stop
-	sleep 1
 	start
 	start
 }
 }