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:
Your application was not able to acquire lock.
There was some other problem:
Keyway could not create the lock directory.
Keyway could not create or remove a lock.
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"