Lesson learned for all, When you run the script it just runs the screen command, which the rsync runs in. So the script completes because its run the screen command, Thus running the rm -rf on the lock file :) thanks for all the help David.
-----Original Message----- From: centos-mirror-bounces@centos.org [mailto:centos-mirror-bounces@centos.org] On Behalf Of David Richardson Sent: Wednesday, August 05, 2009 7:20 PM To: Mailing list for CentOS mirrors. Subject: Re: [CentOS-mirror] lock files
On Wed, 5 Aug 2009, Nick Olsen wrote:
Ok I think I got it, just one more thing. If I make the lock file
myself
with the date >> /tmp/update-centos.lock file it works and doesn't let another one spawn. However. If its not there its not creating it. Do I have the else part in the right spot?
#!/bin/bash
if [ -f /tmp/update-centos.lock ] # It does exist. # Exit here so we don't screw up a run in-progress then echo "Lock file exists" && exit 1 # No, it doesn't exist. # Create the lock file so another run won't start. else date >> /tmp/update-centos.lock fi
### Now we can do the actual rsync. At this point, we know that only
one
### copy of the script is running.
### Big long rsync command ### echo "Starting centos rsync" screen -A -m -d -S centos rsync -vaH --numeric-ids --delete --delete-after --delay-updates --progress rsync://linux.mirrors.es.net/centos/ /home/www/centos DATE=`date` echo "$DATE with mirror linux.mirrors.es.net" > /home/www/txt/centostime.txt
# Now we're done. Remove the lock file. /bin/rm -rf /tmp/update-centos.lock
Hmm. What happens if you remove screen from the picture (that is, have the script run the rsync directly)?
DR