X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=trigger-rcmd.git;a=blobdiff_plain;f=scripts%2Ftrigger-rcmd;fp=scripts%2Ftrigger-rcmd;h=cfd4d790df7c531e9fca9d6482f3cda984a9fa4e;hp=90c19bdb18107d7c505cecff9502b97c91f402db;hb=cbe1996750d31fa0a12165442ad4c909f9d4da90;hpb=7f43dd0b79c807c87bec4bdd1506bb27b6141cc1 diff --git a/scripts/trigger-rcmd b/scripts/trigger-rcmd index 90c19bd..cfd4d79 100755 --- a/scripts/trigger-rcmd +++ b/scripts/trigger-rcmd @@ -124,7 +124,7 @@ do_rcmd() { NO_WAKE= # Check required tools -for t in fping ssh etherwake; do +for t in fping ssh etherwake lockfile-create; do if ! command -v "$t" >/dev/null 2>&1; then echo "$NAME: Required tool \"$t\" missing, aborting!" exit 3 @@ -153,8 +153,15 @@ while [ $# -gt 0 ]; do r=1 else echo "$NAME: Working on \"$1\" - $(date "+%Y-%m-%d %H:%M:%S")" - do_rcmd "$1" ; r=$? - echo "$NAME: Done ($r) - $(date "+%Y-%m-%d %H:%M:%S")" + lck="/run/lock/$NAME-$1.lock" + if lockfile-create --quiet --use-pid --retry 2 --lock-name "$lck"; then + do_rcmd "$1" ; r=$? + echo "$NAME: Done ($r) - $(date "+%Y-%m-%d %H:%M:%S")" + rm -f "$lck" + else + echo "$NAME: Failed to acquire lock file, skipping job! ($lck)" + r=1 + fi fi [ $r -ne 0 ] && result=1 shift