if [ ! -z "$lockfile" ]; then
mkdir -p `dirname $lockfile`
if ( set -o noclobber; echo "$$" > "$lockfile" ) &> /dev/null; then
- trap 'rm -f "$lockfile"' INT TERM EXIT
+ trap 'unset_lockfile' INT TERM EXIT
else
info "Could not create lockfile $lockfile, exiting"
exit
function unset_lockfile {
if [ ! -z "$lockfile" ]; then
- $rm $lockfile || warning "Could not remove lockfile $lockfile"
+ $rm -f $lockfile || warning "Could not remove lockfile $lockfile"
fi
}
function check_lockfile {
- local pid
+ local pid process
if [ ! -z "$lockfile" ] && [ -f "$lockfile" ]; then
pid="`cat $lockfile`"
- if ps $pid &> /dev/null; then
+ process="`ps --no-headers -o comm $pid`"
+ if [ "$?" == "0" ] && [ "`ps --no-headers -o comm $$`" == "$process" ]; then
info "Another backup is running for $lockfile, skipping run"
exit
else