[RndTbl] race conditions?

Sean Walberg sean at ertw.com
Thu Jul 12 21:04:51 CDT 2012


I'd use a lock file just to be safe. Depending on how "restart-daemon"
works you might end up with a race condition inside there, resulting in no
daemon getting run until the next pass.

The easiest way would be

lock="/var/run/mylock"
if [ -f $lock ]; then exit 1; else touch $lock; fi
#do your magic
rm $lock

There are other utilities like flock and lockfile if you are really
concerned about re-entrancy, and depending on the user you run this script
as, you may want to put $lock out of a normal user's reach. But to protect
something running from cron, this will be more than enough.

Sean

On Thu, Jul 12, 2012 at 7:59 PM, Adam Thompson <athompso at dmts.biz> wrote:

> I just wrote the following snippet to quickly rotate some log files.  I
> know this runs without bound, that's acceptable and desirable in this case.
>  What I'm worried about is creating race conditions if this gets run from
> cron every minute...
>
>     ###check if daemon has died###
>     if daemon-is-dead; then
>         L=mydaemon.log
>         shopt -u failglob
>         for i in $( ls -1r ${L}.[0-9]* 2>/dev/null ); do
>                 N=${i#$L.}
>                 M=$(( ${N} + 1 ))
>                 mv -n $i "${L}.${M}"
>         done
>         if [ -f ${L} ] ; then mv -n ${L} ${L}.1; fi
>         restart-daemon
>     fi
>
> Am I shooting myself in the foot here?  The obvious race condition is if
> two copies run simultaneously, but this is only for temporary debugging
> purposes.  If necessary, I'll change the cron job from every minute to
> every five minutes.  Even then, the '-n' option to GNU mv should protect
> me...?
> Does anyone have a safer way to do this sort of thing manually?  I don't
> want this logfile managed by logrotate(8).
>
> -Adam Thompson
>  DMTS (Contractor)
>  athompso at dmts.biz
>  (204) 291-7950 - direct
>  (204) 489-6515 - fax
>
>
> _______________________________________________
> Roundtable mailing list
> Roundtable at muug.mb.ca
> http://www.muug.mb.ca/mailman/listinfo/roundtable
>



-- 
Sean Walberg <sean at ertw.com>    http://ertw.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.muug.mb.ca/pipermail/roundtable/attachments/20120712/1badf80d/attachment.html>


More information about the Roundtable mailing list