Files
openclaude-LLM-local/scripts/install-cron.sh
T
Andrey Lutsenko bf1fd5e77d Add cron installer script for maintenance tasks.
Made-with: Cursor
2026-04-20 23:10:04 +10:00

86 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# Install 3 maintenance cron jobs for OpenClaude local stack.
# Idempotent: replaces managed block, avoids duplicates.
#
# Usage:
# ./scripts/install-cron.sh
# ./scripts/install-cron.sh --user-home /home/myuser --model qwen2.5:3b
USER_HOME="${HOME}"
MODEL="qwen2.5-coder:7b"
REPO_PATH="${USER_HOME}/openclaude-LLM-local"
LOG_DIR="${USER_HOME}/openclaude-logs"
CRON_TMP="$(mktemp)"
while [[ $# -gt 0 ]]; do
case "$1" in
--user-home)
USER_HOME="$2"
REPO_PATH="${USER_HOME}/openclaude-LLM-local"
LOG_DIR="${USER_HOME}/openclaude-logs"
shift 2
;;
--repo-path)
REPO_PATH="$2"
shift 2
;;
--log-dir)
LOG_DIR="$2"
shift 2
;;
--model)
MODEL="$2"
shift 2
;;
*)
echo "Unknown argument: $1"
exit 2
;;
esac
done
START_MARK="# BEGIN OPENCLAUDE_MANAGED_CRON"
END_MARK="# END OPENCLAUDE_MANAGED_CRON"
mkdir -p "$LOG_DIR"
current_cron="$(mktemp)"
if crontab -l > "$current_cron" 2>/dev/null; then
:
else
: > "$current_cron"
fi
# Remove old managed block if present
awk -v s="$START_MARK" -v e="$END_MARK" '
$0 == s {inblock=1; next}
$0 == e {inblock=0; next}
!inblock {print}
' "$current_cron" > "$CRON_TMP"
cat >> "$CRON_TMP" <<EOF
$START_MARK
# 1) Daily status check
10 8 * * * cd $REPO_PATH/docs/rag-mcp-starter && ./status.sh --model $MODEL >> $LOG_DIR/status.log 2>&1
# 2) Weekly model refresh
30 4 * * 0 /usr/bin/ollama pull $MODEL >> $LOG_DIR/model-update.log 2>&1
# 3) Monthly safe stack upgrade
0 5 1 * * cd $REPO_PATH/docs/rag-mcp-starter && ./upgrade.sh --model $MODEL >> $LOG_DIR/stack-upgrade.log 2>&1
$END_MARK
EOF
crontab "$CRON_TMP"
rm -f "$current_cron" "$CRON_TMP"
echo "Cron jobs installed."
echo "Repo path: $REPO_PATH"
echo "Log dir: $LOG_DIR"
echo "Model: $MODEL"
echo
echo "Current crontab:"
crontab -l