synchronizing concurrent shell scripts

Bart Whiteley bart.plug at whiteley.org
Mon Feb 12 13:20:03 MST 2007


On 2/12/07, Michael L Torrie <torriem at chem.byu.edu> wrote:
>
> >
> > However, touch works well.  Something like this has always worked for
> me.
> >
> > while [ -d /var/somelockfile ]; do sleep 1; done
> > touch /var/somelockfile
> > # do something
> > rm /var/somelockfile
>
> Sadly this will not work, at least if you goal is to synchronize
> multiple scripts running asynchronously.  It would have worked in my
> case, but it's not a semaphore.  Who wins when several processes make it
> past the while loop at about the same time?
>
>

Right.  This is why you should use the redirect '>' with noclobber instead.
With noclobber, the redirect works like an atomic test-and-set.



More information about the PLUG mailing list