#!/usr/bin/env bash # SPDX-License-Identifier: LGPL-2.1-or-later set -eux set -o pipefail # sleep interval (seconds) sleep_interval="${sleep_interval:-1}" # extend_timeout_interval second(s) extend_timeout_interval="${extend_timeout_interval:-1}" # number of sleep_intervals before READY=1 start_intervals="${start_intervals:-10}" # number of sleep_intervals before exiting stop_intervals="${stop_intervals:-10}" # run intervals, number of sleep_intervals to run run_intervals="${run_intervals:-7}" # We convert to usec extend_timeout_interval=$((extend_timeout_interval * 1000000)) # shellcheck disable=SC2064 trap "{ touch /${SERVICE}.terminated; exit 1; }" SIGTERM SIGABRT rm -f "/${SERVICE}".* touch "/${SERVICE}.startfail" systemd-notify EXTEND_TIMEOUT_USEC="$extend_timeout_interval" while [[ $start_intervals -gt 0 ]] do sleep "$sleep_interval" start_intervals=$((start_intervals - 1)) systemd-notify EXTEND_TIMEOUT_USEC="$extend_timeout_interval" done systemd-notify --ready --status="Waiting for your request" touch "/${SERVICE}.runtimefail" rm "/${SERVICE}.startfail" systemd-notify EXTEND_TIMEOUT_USEC="$extend_timeout_interval" while [[ $run_intervals -gt 0 ]] do sleep "$sleep_interval" run_intervals=$((run_intervals - 1)) systemd-notify EXTEND_TIMEOUT_USEC="$extend_timeout_interval" done systemd-notify STOPPING=1 touch "/${SERVICE}.stopfail" rm "/${SERVICE}.runtimefail" systemd-notify EXTEND_TIMEOUT_USEC="$extend_timeout_interval" while [[ $stop_intervals -gt 0 ]] do sleep "$sleep_interval" stop_intervals=$((stop_intervals - 1)) systemd-notify EXTEND_TIMEOUT_USEC="$extend_timeout_interval" done touch "/${SERVICE}.success" rm "/${SERVICE}.stopfail" exit 0