mirror of
https://git.FreeBSD.org/ports.git
synced 2025-01-29 10:18:30 +00:00
e441e9ca24
Use an anticongestion sleep in the periodic job to prevent the thundering herd problem when many systems' cron jobs fire off at once. PR: 218448 PR: 218449 Approved by: portmaster@bsdforge.com (maintainer)
85 lines
2.1 KiB
Bash
85 lines
2.1 KiB
Bash
#!/bin/sh
|
|
#
|
|
# $FreeBSD$
|
|
#
|
|
# Box Backup monthly store compare
|
|
#
|
|
# Add the following to /etc/periodic.conf to enable the monthly compare:
|
|
# monthly_boxbackup_compare_enable="YES"
|
|
#
|
|
# By default the script will run "compare -aq". If you want to change this to
|
|
# run a full compare, add the following to periodic.conf:
|
|
# monthly_boxbackup_compare_args="-a"
|
|
#
|
|
# NOTE: This script will cause the monthly periodic(8) run to take much longer
|
|
# than usual, depending on the size of your backup store.
|
|
#
|
|
# If you wish to run this independently of the monthly job, you can create a
|
|
# new periodic entry as follows:
|
|
#
|
|
# # mkdir /usr/local/etc/periodic/boxbackup
|
|
# # mv /usr/local/etc/periodic/monthly/999.boxbackup \
|
|
# /usr/local/etc/periodic/boxbackup/100.compare
|
|
#
|
|
# Then add the following to /etc/crontab:
|
|
# 30 5 1 * * root periodic boxbackup
|
|
#
|
|
# (adjust the timings as necessary)
|
|
#
|
|
# You may also wish to add boxbackup_output="root" to periodic.conf so that
|
|
# mail comes from periodic rather than cron.
|
|
|
|
monthly_boxbackup_compare_enable="NO"
|
|
monthly_boxbackup_compare_args="-aq"
|
|
|
|
if [ -r /etc/defaults/periodic.conf ]
|
|
then
|
|
. /etc/defaults/periodic.conf
|
|
source_periodic_confs
|
|
fi
|
|
|
|
SLEEP=/bin/sleep
|
|
JOT=/usr/bin/jot
|
|
|
|
random() {
|
|
${JOT} -r 1 0 900
|
|
}
|
|
|
|
rc=0
|
|
|
|
case "$monthly_boxbackup_compare_enable" in
|
|
[Yy][Ee][Ss])
|
|
echo
|
|
echo "Running Box Backup store compare:"
|
|
# When non-interactive, sleep to reduce congestion on rkhunter
|
|
# site
|
|
if [ "$1" != -nodelay ]; then
|
|
# In FreeBSD 12.0 the anticongestion function should
|
|
# be used instead of a hard-coded sleep
|
|
if [ -n "$anticongestion_sleeptime" ]; then
|
|
anticongestion
|
|
else
|
|
${SLEEP} $(random)
|
|
fi
|
|
fi
|
|
%%PREFIX%%/sbin/bbackupquery -q "compare -c $monthly_boxbackup_compare_args" quit
|
|
|
|
# Return codes:
|
|
# 1 Comparison was exact
|
|
# 2 Differences were found
|
|
# 3 An error occurred
|
|
if [ $? -eq 2 ]; then
|
|
echo
|
|
echo "Differences were found. Please check the output."
|
|
rc=3
|
|
elif [ $? -eq 3 ]; then
|
|
echo
|
|
echo "An error occurred. Please check the output."
|
|
rc=3
|
|
fi
|
|
|
|
;;
|
|
esac
|
|
|
|
exit $rc
|