diff --git a/bin/lock-util b/bin/lock-util new file mode 120000 index 0000000..5231c28 --- /dev/null +++ b/bin/lock-util @@ -0,0 +1 @@ +../files/lock-util \ No newline at end of file diff --git a/files/lock-util b/files/lock-util new file mode 100755 index 0000000..76eddda --- /dev/null +++ b/files/lock-util @@ -0,0 +1,77 @@ +#!/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