Compare commits
2
Commits
c64be0e9fa
...
9282284472
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9282284472 | ||
|
|
049f3aed84 |
@@ -4,10 +4,30 @@
|
|||||||
|
|
||||||
# Flag-Datei zur Vermeidung paralleler Ausführungen
|
# Flag-Datei zur Vermeidung paralleler Ausführungen
|
||||||
FLAG_FILE="/root/photoprism-auto-index.flag"
|
FLAG_FILE="/root/photoprism-auto-index.flag"
|
||||||
|
LOG_FILE="/root/photoprism-auto-index.log"
|
||||||
|
MAX_LOG_SIZE=$((10 * 1024 * 1024)) # 10 MB in Bytes
|
||||||
|
MAX_FLAG_AGE=$((12 * 60 * 60)) # 12 Stunden in Sekunden
|
||||||
|
|
||||||
|
# Log-Funktion
|
||||||
|
log() {
|
||||||
|
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"
|
||||||
|
|
||||||
|
# Prüfe Log-Größe und kürze wenn nötig
|
||||||
|
if [ -f "$LOG_FILE" ]; then
|
||||||
|
LOG_SIZE=$(stat -f %z "$LOG_FILE" 2>/dev/null || echo 0)
|
||||||
|
if [ "$LOG_SIZE" -gt "$MAX_LOG_SIZE" ]; then
|
||||||
|
# Behalte nur die letzten 50% des Logs
|
||||||
|
tail -n 5000 "$LOG_FILE" > "$LOG_FILE.tmp"
|
||||||
|
mv "$LOG_FILE.tmp" "$LOG_FILE"
|
||||||
|
echo "$(date '+%Y-%m-%d %H:%M:%S') - Log gekürzt (war $((LOG_SIZE / 1024 / 1024)) MB)" >> "$LOG_FILE"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# Cleanup-Funktion die IMMER ausgeführt wird (auch bei Fehlern/Abbruch)
|
# Cleanup-Funktion die IMMER ausgeführt wird (auch bei Fehlern/Abbruch)
|
||||||
cleanup() {
|
cleanup() {
|
||||||
rm -f "$FLAG_FILE"
|
rm -f "$FLAG_FILE"
|
||||||
|
log "Cleanup: Flag-Datei gelöscht"
|
||||||
}
|
}
|
||||||
|
|
||||||
# trap registriert die cleanup-Funktion für verschiedene Exit-Szenarien:
|
# trap registriert die cleanup-Funktion für verschiedene Exit-Szenarien:
|
||||||
@@ -17,15 +37,37 @@ cleanup() {
|
|||||||
# ERR = wenn ein Befehl fehlschlägt (bei set -e)
|
# ERR = wenn ein Befehl fehlschlägt (bei set -e)
|
||||||
trap cleanup EXIT INT TERM ERR
|
trap cleanup EXIT INT TERM ERR
|
||||||
|
|
||||||
|
log "Script gestartet (PID: $$)"
|
||||||
|
|
||||||
# Prüfe ob ein anderer Prozess bereits läuft
|
# Prüfe ob ein anderer Prozess bereits läuft
|
||||||
if [ -f "$FLAG_FILE" ]; then
|
if [ -f "$FLAG_FILE" ]; then
|
||||||
trap - EXIT INT TERM ERR
|
# Prüfe Alter der Flag-Datei
|
||||||
exit 1
|
FLAG_MTIME=$(stat -f %m "$FLAG_FILE" 2>/dev/null || echo 0)
|
||||||
|
CURRENT_TIME=$(date +%s)
|
||||||
|
FLAG_AGE=$((CURRENT_TIME - FLAG_MTIME))
|
||||||
|
|
||||||
|
if [ $FLAG_AGE -gt $MAX_FLAG_AGE ]; then
|
||||||
|
log "Flag-Datei ist älter als 12h ($((FLAG_AGE / 3600))h) - lösche sie und starte neu"
|
||||||
|
cleanup
|
||||||
|
else
|
||||||
|
log "Abbruch: Prozess läuft bereits (seit $((FLAG_AGE / 60)) Minuten)"
|
||||||
|
trap - EXIT INT TERM ERR
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
log "Erstelle Flag-Datei"
|
||||||
echo "Started: $(date '+%Y-%m-%d %H:%M:%S') | PID: $$" > "$FLAG_FILE"
|
echo "Started: $(date '+%Y-%m-%d %H:%M:%S') | PID: $$" > "$FLAG_FILE"
|
||||||
|
|
||||||
# Führe Index-Prozess aus
|
# Führe Index-Prozess aus
|
||||||
docker exec ix-photoprism-photoprism-1 photoprism index
|
log "Starte PhotoPrism Index-Prozess"
|
||||||
|
docker exec ix-photoprism-photoprism-1 photoprism index >> "$LOG_FILE" 2>&1
|
||||||
|
EXIT_CODE=$?
|
||||||
|
|
||||||
|
if [ $EXIT_CODE -eq 0 ]; then
|
||||||
|
log "Index-Prozess erfolgreich abgeschlossen"
|
||||||
|
else
|
||||||
|
log "Index-Prozess fehlgeschlagen (Exit-Code: $EXIT_CODE)"
|
||||||
|
fi
|
||||||
|
|
||||||
# Flag-Datei wird automatisch durch trap cleanup gelöscht
|
# Flag-Datei wird automatisch durch trap cleanup gelöscht
|
||||||
Reference in new issue
Block a user