Home Linux Bash
Simple lock

#!/bin/bash

myLockDir="/var/lock/`basename $0 .sh`"
myPIDfile="$myLockDir/PID"

if  mkdir $myLockDir 2>/dev/null
then
  echo "$$" > $myPIDfile
else
  if ! kill -0 `cat $myPIDfile` &>/dev/null
  then
    echo "cleaning dead pid"
    rm -rf $myLockDir
    exec $0 "$@"
  else
    echo "$0 is already running with lock dir at $myLockDir" >&2
    exit 1
  fi
fi


#clean up at end
rm -rf $myLockDir