Add cron installer script for maintenance tasks.

Made-with: Cursor
This commit is contained in:
Andrey Lutsenko
2026-04-20 23:10:04 +10:00
parent a7c3582799
commit bf1fd5e77d
3 changed files with 107 additions and 0 deletions
+1
View File
@@ -359,3 +359,4 @@ chmod +x script.sh
- Готовый starter: `docs/rag-mcp-starter/` - Готовый starter: `docs/rag-mcp-starter/`
- Работа с GitHub/GitLab/Gitea: `docs/openclaude-with-repositories.md` - Работа с GitHub/GitLab/Gitea: `docs/openclaude-with-repositories.md`
- Примеры cron-автоматизации: `docs/cron-examples.md` - Примеры cron-автоматизации: `docs/cron-examples.md`
- Автоустановка cron: `scripts/install-cron.sh`
+21
View File
@@ -22,6 +22,27 @@ mkdir -p "$HOME/openclaude-logs"
crontab -e crontab -e
``` ```
## Автоустановка cron одной командой
Из корня репозитория:
```bash
chmod +x scripts/install-cron.sh
./scripts/install-cron.sh
```
С кастомной моделью:
```bash
./scripts/install-cron.sh --model qwen2.5:3b
```
С кастомным путём репозитория/логов:
```bash
./scripts/install-cron.sh --repo-path /home/USER/openclaude-LLM-local --log-dir /home/USER/openclaude-logs
```
## 3 cron-задачи ## 3 cron-задачи
```cron ```cron
+85
View File
@@ -0,0 +1,85 @@
#!/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