fix: improve watchdog reliability

This commit is contained in:
2026-06-09 15:05:23 +08:00
parent 00d512f9d9
commit 87b3129374
3 changed files with 67 additions and 1 deletions

View File

@@ -18,6 +18,7 @@ COMMAND_TIMEOUT=8
FAIL_THRESHOLD=2
RESTART_COOLDOWN=60
LOG_FILE="/var/log/cups-watchdog/print.log"
MAX_LOG_SIZE_KB=256
if [ -f "$CONFIG_FILE" ]; then
# shellcheck disable=SC1090
@@ -27,9 +28,29 @@ fi
mkdir -p "$STATE_DIR"
mkdir -p "$(dirname "$LOG_FILE")" 2>/dev/null || true
acquire_lock() {
local lock_dir="$STATE_DIR/print.lock"
if ! mkdir "$lock_dir" 2>/dev/null; then
echo "$(date '+%Y-%m-%d %H:%M:%S') [print-watchdog] another run is active"
exit 0
fi
trap 'rmdir "$lock_dir" 2>/dev/null || true' EXIT
}
rotate_log() {
local max_bytes=$((MAX_LOG_SIZE_KB * 1024))
if [ -f "$LOG_FILE" ] && [ "$(wc -c < "$LOG_FILE" 2>/dev/null || echo 0)" -gt "$max_bytes" ]; then
mv "$LOG_FILE" "$LOG_FILE.1" 2>/dev/null || true
: > "$LOG_FILE"
fi
}
log_msg() {
local msg="$1"
local line
rotate_log
line="$(date '+%Y-%m-%d %H:%M:%S') [print-watchdog] $msg"
echo "$line"
echo "$line" >> "$LOG_FILE" 2>/dev/null || true
@@ -150,9 +171,11 @@ check_print_stack() {
case "${1:-check}" in
check)
acquire_lock
check_print_stack
;;
restart)
acquire_lock
restart_print_stack
;;
*)