78 lines
1.8 KiB
Bash
Executable File
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
|