On Tue, May 29, 2012 at 09:51:54AM +0200, Bret Lambert wrote: > > Please avoid 15 minutes past the hour ;-) > > sleep $(($RANDOM % 2048)) && /usr/libexec/spamd-setup -d
Tried something like the above, and found it still fails at peak times, so I am trying something else: I made a wrapper called ss (spamd sync), to keep retrying within a diminishing timeframe. #!/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 $s $cmd && return || remaining=$(($remaining - $seconds)) done rm $lock } 0 * * * * ss 3600 /usr/libexec/spamd-setup -d The time overhead of running the command creates a small possibility for overlapping of cron events, so I created a lock file. This also seemed a good place to store the sleep value(s). /var/run/spamd-setup.lock spamd-setup(8) does not say how it behaves when daemonized. Maybe this is a better option than running from the cron? .d.d.