bf1fd5e77d
Made-with: Cursor
86 lines
1.9 KiB
Bash
Executable File
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
|