Run-logs in /var/log/agent/runs/ zijn timestamp-named, dus de output van een specifieke job was alleen via grep te vinden. De map jobs/ bestond al maar werd niet gevuld. - run-agent.sh: geeft het run-log-pad door als RUN_LOG env-var aan run-one-job.ts. - run-one-job.ts: legt direct na de claim een symlink jobs/<job_id>.log -> ../runs/<ts>.log. Relatief pad (overleeft de host bind-mount), best-effort (faalt de job nooit over een log-gemak). - log-cleanup.sh: ruimt dangling per-job symlinks op met `find -xtype l` — nodig omdat rotate-logs.sh het doel na 24u gzipt (.log -> .log.gz) of na 30d verwijdert, en de bestaande `-type f` cleanup symlinks niet raakt. Functioneel geverifieerd: symlink resolveert, dangling-prune werkt, `-type f` negeert de symlink (geen voortijdige delete). run-one-job.ts parseert schoon (node --check + type-strip). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
26 lines
1.1 KiB
Bash
Executable file
26 lines
1.1 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# log-cleanup.sh — verwijder log-bestanden ouder dan N dagen
|
|
#
|
|
# Default 2 dagen. Override via env AGENT_LOG_HARD_DELETE_DAYS.
|
|
# Werkt op alles onder ${AGENT_LOG_DIR} (runs/, jobs/, *.log,
|
|
# health-server.log, repo-bootstrap.log).
|
|
#
|
|
# Loopt parallel aan rotate-logs.sh (compressie + 30d delete) en is
|
|
# bewust apart zodat de gzip-rotatie onafhankelijk blijft van de
|
|
# hard delete.
|
|
|
|
set -uo pipefail
|
|
|
|
: "${AGENT_LOG_DIR:=/var/log/agent}"
|
|
: "${AGENT_LOG_HARD_DELETE_DAYS:=2}"
|
|
|
|
find "${AGENT_LOG_DIR}" -type f \
|
|
\( -name '*.log' -o -name '*.log.gz' -o -name '*.txt' -o -name '*.json' \) \
|
|
-mtime "+${AGENT_LOG_HARD_DELETE_DAYS}" -delete 2>/dev/null || true
|
|
|
|
# Prune dangling per-job symlinks: jobs/<job_id>.log -> runs/<ts>.log waarvan
|
|
# het doel door rotatie is gegzipt of verwijderd. De -type f hierboven raakt
|
|
# symlinks niet, dus broken links worden hier expliciet opgeruimd (-xtype l).
|
|
find "${AGENT_LOG_DIR}/jobs" -maxdepth 1 -xtype l -delete 2>/dev/null || true
|
|
|
|
find "${AGENT_LOG_DIR}/jobs" -mindepth 1 -type d -empty -delete 2>/dev/null || true
|