On Tue, August 29, 2006 5:07 pm, Scott Silva wrote: > Johnny Hughes spake the following on 8/29/2006 1:02 PM: >> On Tue, 2006-08-29 at 15:59 -0400, mike.redan at bell.ca wrote: >>> Maybe I am being dense here ... BUT ... >>> >>> Doesn't the "echo $$" only happen AFTER the else process is finished >>> ??? >>> >>> if you make the "else" process be the rsync script, then it will not >>> create $pidfile until after the rsync is done ... which does not help >>> you. >>> >>> if you leave the else process as is and kick off the rsync after the >>> echo $$ then it is not the same PID that you wrote to the $pidfile and >>> you will start more than one rsync process ... as the PID that you >>> wrote >>> to $pidfile as the echo process ... that already finished ... or I am >>> mistaken? >>> >>> >>> The idea of it is to place that bit of code at or near the beginning of >>> your script, then have the rsync process start after the "echo $$". >>> That >>> will put the PID of your script into that file, the rsync process will >>> be started in the script, and the script would not end until the rsync >>> one does..so you are fairly safe that two instances of your script will >>> run at thte same time.. >>> >> >> OK ... I see. >> >> The rsync process is a second PID ... but the first PID is also still >> open until after the script closes. > I tried the above, but was able to start multiple copies of the script. > So I will have to see what is not catching the runs. > The lockfile is there, but not stopping another execution of the script. > I use the lockfile utility. Take a look at its man page, it is well written. Here is how I use it (Bourne shell): # try to create the lock and check the outcome lockfile -r 0 /var/run/myapp.lock 1>/dev/null 2>&1 status=$? if [ ${status} -ne 0 ] ;then echo "Another instance already running. Aborting." exit 1 fi # body of the script here # remove the lock at the end of the script rm -f /var/run/myapp.lock