> #!/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 }