add monthly_maintenance.sh — uptime-triggered orchestrator
Two-gate design: server must have ≥30 days uptime AND last run must be ≥30 days ago. Both gates must pass before any scripts fire. Called daily at 3am via cron — script self-gates, calling more often is safe. State file on /boot/config (survives reboots): the interval gate is independent of uptime. A reboot resets uptime but does not reset when maintenance last ran — both gates must independently pass. MONTHLY_MAINTENANCE_SCRIPTS added to master.conf in ORCHESTRATORS section. zfs_pool_scrub.sh and smart_long_test.sh listed but commented (neither script exists yet). Also commits mesh_monitor.sh move to Monitors/ that was staged from prior session. Supports --force to bypass both gates for manual runs.
This commit is contained in:
@@ -37,6 +37,7 @@
|
||||
#
|
||||
# ── ORCHESTRATORS ──────────────────────────────────────────────────────────────────────────
|
||||
# ARRAY START Scripts launched at array start (array_started.sh)
|
||||
# MONTHLY MAINTENANCE Uptime-triggered heavy tasks — ZFS scrub, SMART tests (monthly_maintenance.sh)
|
||||
# DAILY SYNC MAINTENANCE Job list + media shares (daily_sync_maintenance.sh)
|
||||
# WEEKLY SYNC MAINTENANCE Job list + sync shares + update toggles (weekly_sync_maintenance.sh)
|
||||
# CRITICAL SYNC MAINTENANCE 15-minute jobs + sync shares + partnership check (critical_sync_maintenance.sh)
|
||||
@@ -311,6 +312,23 @@
|
||||
"Watchdogs/System/network_watchdog.sh" # internet, DDNS, Tailscale, NPM proxy
|
||||
)
|
||||
|
||||
# ━━━ Monthly Maintenance ━━━
|
||||
# monthly_maintenance.sh fires only when BOTH gates pass:
|
||||
# 1. Server uptime >= MONTHLY_UPTIME_THRESHOLD_DAYS days
|
||||
# 2. Last run was >= MONTHLY_RUN_INTERVAL_DAYS days ago (or never run)
|
||||
# Cron: 0 3 * * * (daily 3am check — script self-gates, calling daily is safe)
|
||||
# NOT in WATCHDOG_ORCHESTRATOR_SCRIPTS — has its own cron entry.
|
||||
# Add scripts that require a long-stable settled system — scrubs, extended drive tests.
|
||||
# State file on /boot/config — survives reboots (interval gate independent of uptime gate).
|
||||
MONTHLY_MAINTENANCE_SCRIPTS=(
|
||||
#"Tools/zfs_pool_scrub.sh" # ZFS pool integrity scrub — not yet built
|
||||
#"Tools/smart_long_test.sh" # SMART extended drive health test — not yet built
|
||||
)
|
||||
|
||||
MONTHLY_UPTIME_THRESHOLD_DAYS=30 # minimum uptime in days before maintenance fires
|
||||
MONTHLY_RUN_INTERVAL_DAYS=30 # minimum days since last run before running again
|
||||
MONTHLY_LAST_RUN_FILE="/boot/config/monthly_maintenance_last_run.db"
|
||||
|
||||
# ━━━ Critical Sync Maintenance ━━━
|
||||
# critical_sync_maintenance.sh runs every 15 minutes.
|
||||
# Order: CRITICAL_MAINTENANCE_SCRIPTS (jobs) → CRITICAL_SYNC_SHARES (rsync) → partnership --check
|
||||
|
||||
Reference in New Issue
Block a user