26 lines
512 B
Bash
26 lines
512 B
Bash
#!/bin/bash
|
|
LockDir="/run/$(basename "$0").run"
|
|
P() {
|
|
while ! mkdir "$LockDir" 2>/dev/null
|
|
do
|
|
echo "cannot lock $LockDir, waiting"
|
|
LockDirStamp=$(stat -c %Y "$LockDir")
|
|
if [ "$LockDirStamp" != "" ] && [ "$LockDirStamp" -lt $(date --date "15 seconds ago" +%s) ]
|
|
then
|
|
echo lock is old, deleting
|
|
rmdir "$LockDir"
|
|
fi
|
|
sleep 1
|
|
done
|
|
echo got lock
|
|
}
|
|
V() {
|
|
echo "releasing $LockDir"
|
|
rmdir "$LockDir"
|
|
}
|
|
P
|
|
echo "running protected code"
|
|
sleep 10
|
|
V
|
|
echo "end protected code"
|