You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
1.0 KiB
Bash

#!/bin/bash
cd $(dirname ${0}) >/dev/null
source inc/main-inc.sh
START_TIME=$(date +%s)
# Load all sensor scripts and their intervals
declare -A SCRIPTS
for SCRIPT in $(ls sensors.d/*.sh); do
BASENAME="$(basename ${SCRIPT})"
eval $(cat "${SCRIPT}" | head -n1)
log "Loaded sensor '$(basename ${SCRIPT})', runs every ${INTERVAL} seconds"
SCRIPTS["${BASENAME}"]=${INTERVAL}
done
log "Starting Scheduler routine"
if [[ "$@" == *"-qs"* ]]; then
log "Will suppress sensor script outputs"
export SCRIPTS_QUIET=yes
fi
while true; do
NOW=$(date +%s)
DIFF=$(expr ${START_TIME} - ${NOW})
for SCRIPT in "${!SCRIPTS[@]}"; do
SCRIPT_EVERY=${SCRIPTS[${SCRIPT}]}
if [ $( expr ${DIFF} % ${SCRIPT_EVERY} ) -eq 0 ]; then
logAdv "SCHD" "Launching $(basename ${SCRIPT})"
source "sensors.d/${SCRIPT}" ${QUIET_SCRIPT_PARAM} &
fi
done
# Wait one second to make sure the if statements don't fire repeatedly
# during any specific unix time second, not elegant but works
sleep 1
done