From 4af84efed152fe5fa8dbfc2e09afee6d2a0eee72 Mon Sep 17 00:00:00 2001 From: Matthias Wirth Date: Tue, 6 Aug 2024 21:56:27 +0200 Subject: [PATCH] move to exec this change uses the s6 death tally logic to check if it's the first start of the service, if it's not it will delay the start of airspy_adsb in the usual case of a normal container startup, airspy_adsb is instantly started up with exec which frees some memory used by bash --- rootfs/etc/s6-overlay/scripts/airspy_adsb | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/rootfs/etc/s6-overlay/scripts/airspy_adsb b/rootfs/etc/s6-overlay/scripts/airspy_adsb index 30d15ff..ab2adcd 100755 --- a/rootfs/etc/s6-overlay/scripts/airspy_adsb +++ b/rootfs/etc/s6-overlay/scripts/airspy_adsb @@ -2,7 +2,6 @@ #shellcheck shell=bash disable=SC1091 source /scripts/common -trap 'pkill -P $$' SIGTERM SIGINT SIGHUP SIGQUIT s6wrap=(s6wrap --quiet --prepend="$(basename "$0")" --timestamps --args) @@ -167,11 +166,11 @@ fi "${s6wrap[@]}" echo "Running: ${AIRSPY_ADSB_BIN} ${AIRSPY_ADSB_CMD[*]}" # Slow down restarts -sleep 10 & +# wait 30 seconds if this is not the first startup (this should only happen on crashes or a bad command line, thus this can be a long timeout) +if [[ $(s6-svdt /run/service/airspy_adsb | wc -l) != 0 ]]; then + "${s6wrap[@]}" echo "delaying restart by 30 seconds" + sleep 30 +fi #shellcheck disable=SC2016 -"${s6wrap[@]}" "${AIRSPY_ADSB_BIN}" "${AIRSPY_ADSB_CMD[@]}" & - -# trap will only work properly while the shell is running / waiting, not while another program is being foreground executed -# the first wait exits due to the signal which is trapped, the 2nd wait actually waits for collectd to exit -wait || wait || true +exec "${s6wrap[@]}" "${AIRSPY_ADSB_BIN}" "${AIRSPY_ADSB_CMD[@]}"