Skip to content

Instantly share code, notes, and snippets.

@lktslionel
Forked from jpclipffel/bash_flock.sh
Created March 12, 2021 08:18
Show Gist options
  • Save lktslionel/2af744fb51b727b0d6b73bd48710164e to your computer and use it in GitHub Desktop.
Save lktslionel/2af744fb51b727b0d6b73bd48710164e to your computer and use it in GitHub Desktop.
Bash flock example
#!/bin/bash
#
# Bash `flock` example.
# Works on: Linux, BSD
# Doesn't work on: MacOS
# The file which represent the lock.
LOCKFILE="`basename $0`.lock"
# Timeout in seconds.
TIMEOUT=2
# Create the lockfile.
touch $LOCKFILE
# Create a file descriptor over the given lockfile.
exec {FD}<>$LOCKFILE
# Try to lock the file descriptor $FD during $TIMEOUT seconds.
# If it failsm exit with an error.
# Otherwise, the lock is acquired and implicitely droped at the end of the script.
if ! flock -x -w $TIMEOUT $FD; then
echo "Failed to obtain a lock within $TIMEOUT seconds"
echo "Another instance of `basename $0` is probably running."
exit 1
else
echo "Lock acquired"
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment