Verhindern, dass Shell-Skripts mehrfach gleichzeitig laufen

Oft habe ich den Fall, dass ein Shell-Skript im Cron läuft. Manchmal läuft es aber so lange, dass es vom cron ein zweites Mal gestartet wird. Das will ich verhindern. Nun habe ich eine schicke Lösung gefunden:

lockfile=/var/lock/.$(basename $0).exclusivelock
(
    # Wait for lock on $lockfile (fd 200) for 10 seconds
    if ! flock -x -w 10 200 ; then
        echo >&2 "$0 is already running. exit."
        exit 1
    fi

    # Hier das eigentliche Zeug...

) \
200>$lockfile

Anlass war übrigens das docker-compose-update-Skript.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert