Skip to content

Commit 32f5068

Browse files
committed
Tilføj "Jobmanager: Skift start-tidspunkt og interval"
1 parent 6d3f76a commit 32f5068

File tree

2 files changed

+104
-0
lines changed

2 files changed

+104
-0
lines changed

randomize_jobmanager.md

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
title: "Jobmanager: Skift start-tidspunkt og interval"
3+
parent: "System"
4+
source: scripts/randomize_jobmanager.sh
5+
parameters:
6+
- name: "Interval"
7+
type: "int"
8+
default: null
9+
mandatory: true
10+
compatibility:
11+
- "22.04"
12+
- "BorgerPC"
13+
- "Kiosk"
14+
---
15+
16+
## Beskrivelse
17+
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.
18+
19+
Dette script får i stedet cron.d/bibos_jobmanager jobbet til at starte på et tilfældigt tidspunkt inden for et givent interval.
20+
21+
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.
22+
23+
Starttidspunktet er valgt tilfældigt inden for et interval.
24+
25+
Dette script er blevet testet og virker på Ubuntu 22.04.

scripts/randomize_jobmanager.sh

+79
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
#!/usr/bin/env bash
2+
#================================================================
3+
# HEADER
4+
#================================================================
5+
#% SYNOPSIS
6+
#+ randomize_jobmanager args $(interval in minutes)
7+
#%
8+
#% DESCRIPTION
9+
#% This script sets the cron.d/os2borgerpc_jobmanager job to execute
10+
#% at a random startup time with a certain interval.
11+
#% So if the interval is 5 minutes, the jobmanager could run at
12+
#% 1, 6, 11...56 every hour, instead of 0, 5, 10 ...55.
13+
#%
14+
#================================================================
15+
#- IMPLEMENTATION
16+
#- version randomize_jobmanager (magenta.dk) 0.0.1
17+
#- author Danni Als
18+
#- copyright Copyright 2018, Magenta Aps"
19+
#- license GNU General Public License
20+
21+
#-
22+
#================================================================
23+
# HISTORY
24+
# 2018/15/02 : danni : Script creation
25+
#
26+
#================================================================
27+
# END_OF_HEADER
28+
#================================================================
29+
30+
INTERVAL=$1
31+
32+
CHECKIN_SCRIPT="/usr/share/os2borgerpc/bin/check-in.sh"
33+
CRON_PATH="/etc/cron.d/os2borgerpc-jobmanager"
34+
35+
if [ $# -ne 1 ]; then
36+
echo "This job takes exactly one parameter."
37+
exit 1
38+
fi
39+
40+
if [ "$INTERVAL" -gt 59 ] || [ "$INTERVAL" -lt 3 ]; then
41+
echo "Interval must be between 3 and 59 inclusive."
42+
exit 1
43+
fi
44+
45+
RANDOM_NUMBER=$((RANDOM%INTERVAL+0))
46+
CRON_COMMAND="$RANDOM_NUMBER,"
47+
# Generate a pseudo-random number between 0 and 59
48+
DELAY_IN_SECONDS=$((RANDOM%60))
49+
50+
# Make sure the folder for the check-in script exists
51+
mkdir --parents "$(dirname "$CHECKIN_SCRIPT")"
52+
53+
cat <<EOF > "$CHECKIN_SCRIPT"
54+
#!/usr/bin/env sh
55+
56+
sleep $DELAY_IN_SECONDS
57+
58+
/usr/local/bin/jobmanager
59+
EOF
60+
61+
chmod 700 "$CHECKIN_SCRIPT"
62+
63+
while [ $((RANDOM_NUMBER+INTERVAL)) -lt 60 ]
64+
do
65+
RANDOM_NUMBER=$((RANDOM_NUMBER+INTERVAL))
66+
if [ $((RANDOM_NUMBER+INTERVAL)) -ge 60 ]
67+
then
68+
CRON_COMMAND="$CRON_COMMAND$RANDOM_NUMBER * * * * root $CHECKIN_SCRIPT"
69+
else
70+
CRON_COMMAND="$CRON_COMMAND$RANDOM_NUMBER,"
71+
fi
72+
done
73+
echo "$CRON_COMMAND"
74+
75+
# Note: The PATH below is inherited by the scripts jobmanager runs. Fx. they can't find scripts in /usr/local/bin without it
76+
cat <<EOF > "$CRON_PATH"
77+
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
78+
$CRON_COMMAND
79+
EOF

0 commit comments

Comments
 (0)