#!/bin/bash # Varaverk job runner — wraps script execution with JSON status tracking. # Called by /etc/cron.d/varaverk for every scheduled job. # # Usage: bash run_job.sh [flags...] # # Writes: /var/log/varaverk/.json — status, timestamps, exit code, pid # /var/log/varaverk/.log — latest run output (overwritten each run) # # Status values: running → ok (exit 0) | warn (exit 1) | error (exit 2+) JOB_ID="$1" SCRIPT="$2" shift 2 LOG_DIR="/var/log/varaverk" BASE="${JOB_ID%.sh}" LOG_FILE="$LOG_DIR/$BASE.log" STAT_FILE="$LOG_DIR/$BASE.json" mkdir -p "$(dirname "$LOG_FILE")" "$(dirname "$STAT_FILE")" START=$(date +%s) printf '{"id":"%s","status":"running","start":%s,"pid":%s}\n' \ "$JOB_ID" "$START" "$$" > "$STAT_FILE" bash "$SCRIPT" "$@" > "$LOG_FILE" 2>&1 EC=$? END=$(date +%s) if [ "$EC" -eq 0 ]; then STATUS="ok" elif [ "$EC" -eq 1 ]; then STATUS="warn" else STATUS="error" fi printf '{"id":"%s","status":"%s","start":%s,"end":%s,"exit":%s}\n' \ "$JOB_ID" "$STATUS" "$START" "$END" "$EC" > "$STAT_FILE" exit $EC