Skip to content

TrevorS/keyway

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 

Repository files navigation

dP
88
88  .dP  .d8888b. dP    dP dP  dP  dP .d8888b. dP    dP
88888"   88ooood8 88    88 88  88  88 88'  `88 88    88
88  `8b. 88.  ... 88.  .88 88.88b.88' 88.  .88 88.  .88
dP   `YP `88888P' `8888P88 8888P Y8P  `88888P8 `8888P88
                       .88                          .88
                   d8888P                       d8888P

Keyway

A simple lock file library.

Features
  • Provides mutual exclusion for scripts that require the same resource.
  • Requires three additional lines of code in your script, including sourcing the library.
  • Scripts using Keyway can be configured to either terminate or busy-wait if a resource is blocked.
  • Keyway will report when an external error was caught and there are lock files in the lock directory.
Usage:
  • acquire_lock_for "your_task_name"
    • If the resource is not locked, your task will execute, otherwise it will terminate.
  • acquire_spinlock_for "your_task_name"
    • If the resource is locked, your task will wait until the lock has been released before acquiring its own lock and executing.
Return Code Explanations:
  1. Your application was not able to acquire lock.
  2. There was some other problem:
    • Keyway could not create the lock directory.
    • Keyway could not create or remove a lock.
  3. An error was caught and there are lock files in the lock directory.
An example:
#!/bin/bash
source keyway_lib.sh

# optionally override the lock file directory
LOCK_DIR="alt-lock-dir"

# attempt to lock the shared resource
acquire_lock_for "your_task_name"

# if the lock was successful, execute the task
echo "executing critical section"

# release the lock when the task is done
release_lock_for "your_task_name"

About

A simple Bash lock file library.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages