Jobmanager: Skift start-tidspunkt og interval
Source: Download script
Last Updated: 18. December 2024 by Agnete Moos (agms@sonderborg.dk)
Parameters:
Navn | Type | Standardværdi | Påkrævet |
---|---|---|---|
Click to see the source code
#!/usr/bin/env bash
#================================================================
# HEADER
#================================================================
#% SYNOPSIS
#+ randomize_jobmanager args $(interval in minutes)
#%
#% DESCRIPTION
#% This script sets the cron.d/os2borgerpc_jobmanager job to execute
#% at a random startup time with a certain interval.
#% So if the interval is 5 minutes, the jobmanager could run at
#% 1, 6, 11...56 every hour, instead of 0, 5, 10 ...55.
#%
#================================================================
#- IMPLEMENTATION
#- version randomize_jobmanager (magenta.dk) 0.0.1
#- author Danni Als
#- copyright Copyright 2018, Magenta Aps"
#- license GNU General Public License
#- email danni@magenta-aps.dk
#-
#================================================================
# HISTORY
# 2018/15/02 : danni : Script creation
#
#================================================================
# END_OF_HEADER
#================================================================
INTERVAL=$1
CHECKIN_SCRIPT="/usr/share/os2borgerpc/bin/check-in.sh"
CRON_PATH="/etc/cron.d/os2borgerpc-jobmanager"
if [ $# -ne 1 ]; then
echo "This job takes exactly one parameter."
exit 1
fi
if [ "$INTERVAL" -gt 59 ] || [ "$INTERVAL" -lt 3 ]; then
echo "Interval must be between 3 and 59 inclusive."
exit 1
fi
RANDOM_NUMBER=$((RANDOM%INTERVAL+0))
CRON_COMMAND="$RANDOM_NUMBER,"
# Generate a pseudo-random number between 0 and 59
DELAY_IN_SECONDS=$((RANDOM%60))
# Make sure the folder for the check-in script exists
mkdir --parents "$(dirname "$CHECKIN_SCRIPT")"
cat < "$CHECKIN_SCRIPT"
#!/usr/bin/env sh
sleep $DELAY_IN_SECONDS
/usr/local/bin/jobmanager
EOF
chmod 700 "$CHECKIN_SCRIPT"
while [ $((RANDOM_NUMBER+INTERVAL)) -lt 60 ]
do
RANDOM_NUMBER=$((RANDOM_NUMBER+INTERVAL))
if [ $((RANDOM_NUMBER+INTERVAL)) -ge 60 ]
then
CRON_COMMAND="$CRON_COMMAND$RANDOM_NUMBER * * * * root $CHECKIN_SCRIPT"
else
CRON_COMMAND="$CRON_COMMAND$RANDOM_NUMBER,"
fi
done
echo "$CRON_COMMAND"
# Note: The PATH below is inherited by the scripts jobmanager runs. Fx. they can't find scripts in /usr/local/bin without it
cat < "$CRON_PATH"
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
$CRON_COMMAND
EOF
Beskrivelse
Jobmanageren er det program, der tjekker adminsitet efter om BorgerPC’en eller DisplayPC’en har nye scripts til kørsel, og som sender status tilbage, og evt. information om sikkerhedsadvarsler. Jobmanageren kører normalt hvert 5. minut, startende fra 00.
Dette script får i stedet cron.d/bibos_jobmanager jobbet til at starte på et tilfældigt tidspunkt inden for et givent interval.
Eksempel: Intervallet er 5 minutter, så kan jobmanageren potentielt køre hvert 1., 6., 11..56. minut hver time, i stedet for 0., 5., 10…55. minut.
Starttidspunktet er valgt tilfældigt inden for et interval.
Dette script er inkluderet i OS2BorgerPC image fra version 4.0.0 og fremadrettet. Dette script er blevet testet og virker på Ubuntu 22.04.