> #!/bin/sh
> remaining=$1;shift
> cmd=$@
> lock=/var/run/$(basename $1).lock
> [ -f $lock ] || {
>   touch $lock
>   while [ $remaining -gt 0 ]; do
>     seconds=$(($RANDOM % $remaining))
>     echo $(date) $seconds >> $lock
>     sleep $seconds
>     $cmd && return || remaining=$(($remaining - $seconds))
>   done
>   rm $lock
> }
> 

*groan*.. another mistake.. I'm such an idiot sometimes ;-)

I don't recommend running this without checking it first.

#!/bin/sh
remaining=$1;shift
cmd=$@
lock=/var/run/$(basename $1).lock
[ -f $lock ] || {
  touch $lock
  while [ $remaining -gt 0 ]; do
    seconds=$(($RANDOM % $remaining))
    echo $(date) $seconds >> $lock
    sleep $seconds
    $cmd && break || remaining=$(($remaining - $seconds))
  done
  rm $lock
}

Reply via email to