aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSilvio Rhatto <rhatto@riseup.net>2010-08-21 19:30:02 -0300
committerSilvio Rhatto <rhatto@riseup.net>2010-08-21 19:30:02 -0300
commitf4ed3ae9a222f121a1d4a18976ad0319dff4ad3d (patch)
tree6e77264a9ca9d5a0fa6c133af7ec31fb3d0ef78e
parent7f075c1e3e99dc42bec414aa071c9e2fb5da0ded (diff)
downloadbackupninja-f4ed3ae9a222f121a1d4a18976ad0319dff4ad3d.tar.gz
backupninja-f4ed3ae9a222f121a1d4a18976ad0319dff4ad3d.tar.bz2
Making sure that the pid on lockfile reffers to an rsync backup process
-rw-r--r--handlers/rsync.in9
1 files changed, 5 insertions, 4 deletions
diff --git a/handlers/rsync.in b/handlers/rsync.in
index cf304ed..f092812 100644
--- a/handlers/rsync.in
+++ b/handlers/rsync.in
@@ -849,7 +849,7 @@ function set_lockfile {
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
@@ -861,18 +861,19 @@ function set_lockfile {
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