Move handling of lockfiles back to the script. Use trap instead.

This commit is contained in:
2025-09-21 01:20:34 +02:00
parent 61bd0e22a4
commit 25961b3f6f
2 changed files with 24 additions and 2 deletions

View File

@@ -6,6 +6,7 @@ REPO_LOCAL_PATH="/opt/src"
BRANCH_NAME="develop"
POLL_INTERVAL=60 # Seconds between checks
#LOG_FILE="/var/log/git-monitor.log" # Log file for recording actions
LOCK_FILE="/run/lock/git-monitor.lock" # File to prevent multiple instances
IFS="|"
# Functions
@@ -17,6 +18,21 @@ log_message() {
echo "$timestamp [$level] $message" # Also print to console (optional)
}
check_lock() {
if [ -f "$LOCK_FILE" ]; then
log_message "WARN" "Another instance is already running. Exiting."
exit 1
fi
}
create_lock() {
touch "$LOCK_FILE"
}
remove_lock() {
rm -f "$LOCK_FILE"
}
run_after() {
local after_pull_script=$1
source $after_pull_script
@@ -68,6 +84,12 @@ check_for_updates() {
}
# Main Execution
trap 'remove_lock' EXIT
check_lock
create_lock
log_message "INFO" "Git monitor started."
initialize_repos
@@ -81,3 +103,5 @@ while true; do
done < $REPO_URLS
sleep "$POLL_INTERVAL"
done
remove_lock # This won't be reached in this infinite loop. Useful if exiting gracefully.