vps / setup-cron.sh
akenomainx4's picture
Initial upload: Shellular Web UI + keep-alive service
6d92394 verified
#!/usr/bin/env bash
# ─────────────────────────────────────────────────────────────────────────────
# setup-cron.sh Β· dust-sync-3f74b8
# Registers (or updates) the keep-alive cronjob.
# Run once after cloning / setting up the project.
# ─────────────────────────────────────────────────────────────────────────────
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
KEEP_ALIVE="$SCRIPT_DIR/keep-alive.sh"
LOG_FILE="$SCRIPT_DIR/keep-alive.log"
CRON_TAG="dust-sync-3f74b8" # unique identifier for this job
# ── Pre-flight checks ─────────────────────────────────────────────────────────
if [[ ! -f "$KEEP_ALIVE" ]]; then
echo "[ERROR] keep-alive.sh not found at: $KEEP_ALIVE" >&2
exit 1
fi
if [[ ! -f "$SCRIPT_DIR/.keep-alive.env" ]]; then
echo "[ERROR] .keep-alive.env not found."
echo " Copy .keep-alive.env.example β†’ .keep-alive.env and fill in your values."
exit 1
fi
# Ensure script is executable
chmod +x "$KEEP_ALIVE"
# ── Install cron entry ────────────────────────────────────────────────────────
CRON_LINE="*/15 * * * * $KEEP_ALIVE >> $LOG_FILE 2>&1 # $CRON_TAG"
# Dump existing crontab (ignore error when empty), remove old entry, add new
TMPFILE="$(mktemp)"
trap 'rm -f "$TMPFILE"' EXIT
crontab -l 2>/dev/null | grep -v "# $CRON_TAG" > "$TMPFILE" || true
echo "$CRON_LINE" >> "$TMPFILE"
crontab "$TMPFILE"
echo ""
echo " Cronjob installed successfully."
echo " ─────────────────────────────────────────────────"
echo " Tag : $CRON_TAG"
echo " Script : $KEEP_ALIVE"
echo " Schedule: every 15 minutes"
echo " Log : $LOG_FILE"
echo " ─────────────────────────────────────────────────"
echo ""
echo " Active crontab:"
crontab -l | grep "$CRON_TAG"
echo ""
echo " Run manually to test:"
echo " bash $KEEP_ALIVE"