Files
q-tools/files/lock-util
Ville Rantanen 77ad758c1b added lock-util
2016-11-24 10:24:59 +02:00

78 lines
1.8 KiB
Bash
Executable File

#!/bin/bash
_help() {
echo '
Usage: lock-util {lock-file} [-v] [command] [args]
Commands:
create
exist ( return 0 if lock exists )
old [age in seconds] ( return 0 if file younger than [args] seconds )
remove
-v as first argument sets very verbose mode
'
}
LOCKFILE="$1"
[[ "$2" = "-v" ]] && {
VERBOSE=on
COMMAND="$3"
ARG="$4"
} || {
COMMAND="$2"
ARG="$3"
}
BOXES=cat
which boxes &>/dev/null && BOXES="boxes -d shell"
_create() {
touch "$LOCKFILE"
}
_exist() {
test -f "$LOCKFILE"
}
_remove() {
rm "$LOCKFILE"
}
[[ $COMMAND = "create" ]] && {
_exist && {
[[ "$VERBOSE" = "on" ]] && echo "LOCK FILE EXISTS" | $BOXES
exit 1
}
_create
ec=$?
[[ "$VERBOSE" = "on" ]] && [[ $ec -eq 0 ]] && echo "LOCK FILE CREATED" | $BOXES
[[ "$VERBOSE" = "on" ]] && [[ $ec -ne 0 ]] && echo "UNABLE TO CREATE LOCK FILE" | $BOXES
exit $ec
}
[[ $COMMAND = "exist" ]] && {
_exist
ec=$?
[[ "$VERBOSE" = "on" ]] && [[ $ec -eq 0 ]] && echo "LOCK FILE EXISTS" | $BOXES
[[ "$VERBOSE" = "on" ]] && [[ $ec -ne 0 ]] && echo "LOCK FILE DOES NOT EXIST" | $BOXES
exit $ec
}
[[ $COMMAND = "old" ]] && {
created=$( stat -c %Z "$LOCKFILE" )
now=$( date +%s )
age=$(( $now - $created ))
test $ARG -lt $age
ec=$?
[[ "$VERBOSE" = "on" ]] && [[ $ec -eq 0 ]] && echo "LOCK FILE OLDER THAN $ARG s" | $BOXES
[[ "$VERBOSE" = "on" ]] && [[ $ec -ne 0 ]] && echo "LOCK FILE YOUNGER THAN $ARG s" | $BOXES
exit $ec
}
[[ $COMMAND = "remove" ]] && {
_remove
ec=$?
[[ "$VERBOSE" = "on" ]] && [[ $ec -eq 0 ]] && echo "LOCK FILE REMOVED" | $BOXES
[[ "$VERBOSE" = "on" ]] && [[ $ec -ne 0 ]] && echo "UNABLE TO REMOVE LOCK FILE" | $BOXES
exit $ec
}
echo Command not recognized
_help