diff --git a/btrbk-cron b/btrbk-cron index 9307545..5153781 100755 --- a/btrbk-cron +++ b/btrbk-cron @@ -31,13 +31,21 @@ else echo "Info: Healthchecks disabled" fi +# lockfile check if [[ -f "${LOCKFILE}" ]] ; then - echo "Another instance is still running" | tee -a "${LOGFILE}" - if [[ "${HEALTHCHECK_ENABLE}" = "true" ]] ; then - curl "${CURLOPTS[@]}" --data-binary "@${LOGFILE}" "${HEALTHCHECK_URL}/log" + # check if stale lockfile + if [[ $(pgrep -c btrbk || true) -eq 0 ]] ; then + echo "Removing stale lock file: ${LOCKFILE}" + rm "${LOCKFILE}" + else + # another instance is really running, we exit + echo "Another instance is still running" | tee -a "${LOGFILE}" + if [[ "${HEALTHCHECK_ENABLE}" = "true" ]] ; then + curl "${CURLOPTS[@]}" --data-binary "@${LOGFILE}" "${HEALTHCHECK_URL}/log" + fi + rm -f -- "${LOGFILE}" + exit 0 fi - rm -f -- "${LOGFILE}" - exit 0 fi HOST=$(grep -E '^[\ \t]*target[\ \t]+send-receive' /etc/btrbk/btrbk.conf)