--- /dev/null
+#!/usr/bin/perl
+
+# Sleep randomly betwenn 0 and $ARGV[0] seconds.
+
+# Copyright (C) 2013 Simon Ruderich
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+use strict;
+use warnings;
+
+
+if (scalar @ARGV != 1) {
+ print STDERR "Usage: $0 <maximum sleep time in seconds>\n";
+ exit 1;
+}
+
+srand;
+sleep int rand $ARGV[0];
# Include user's binaries in PATH. Expanding $HOME doesn't work with cron,
# `update.sh` handles that!
PATH=$HOME/bin:$HOME/.shell/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
-# "RAND_SLEEP X" is also expanded by `update.sh` to a command which sleeps
-# randomly between 0 and X seconds. Used to reduce concurrent commands if this
+# `rsleep` (random sleep) is used to reduce concurrent commands if this
# crontab file is used by multiple users.
# Taken from Debian's /etc/crontab from cron package 3.0pl1-124 and modified.
# Thanks.
-17 * * * * RAND_SLEEP 60; run-parts --report .crontab.d/jobs.hourly
-25 6 * * * RAND_SLEEP 1800; run-parts --report .crontab.d/jobs.daily
-47 6 * * 7 RAND_SLEEP 3600; run-parts --report .crontab.d/jobs.weekly
-52 6 1 * * RAND_SLEEP 3600; run-parts --report .crontab.d/jobs.monthly
+17 * * * * rsleep 60; run-parts --report .crontab.d/jobs.hourly
+25 6 * * * rsleep 1800; run-parts --report .crontab.d/jobs.daily
+47 6 * * 7 rsleep 3600; run-parts --report .crontab.d/jobs.weekly
+52 6 1 * * rsleep 3600; run-parts --report .crontab.d/jobs.monthly
# Run on system startup.
@reboot run-parts --report .crontab.d/jobs.reboot
# Run every minute.
* * * * * run-parts --report .crontab.d/jobs.minutely
# Run every x hours.
-31 */6 * * * RAND_SLEEP 600; run-parts --report .crontab.d/jobs.hourly6
-39 */8 * * * RAND_SLEEP 600; run-parts --report .crontab.d/jobs.hourly8
+31 */6 * * * rsleep 600; run-parts --report .crontab.d/jobs.hourly6
+39 */8 * * * rsleep 600; run-parts --report .crontab.d/jobs.hourly8
# vim: ft=crontab