#!/bin/bash log_file="auto_cleaner.log" lock_dir="${1:-./}" lock_file="${lock_dir}auto_build.lock" timeout=600 # 超时时间,单位为秒 # 记录日志函数 log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$log_file" } # 拼接锁文件路径 lock_file="${lock_dir}auto_build.lock" # 判断锁文件是否存在 if [ -f "$lock_file" ]; then # 获取锁文件中的进程ID pid=$(cat "$lock_file") # 判断系统中是否有该进程 if ps -p "$pid" >/dev/null; then # 判断进程名称是否包含auto_build.sh process_name=$(ps -o comm= -p "$pid") if [[ "$process_name" == *"auto_build.sh"* ]]; then log "进程[$pid]异常,释放$lock_file" rm "$lock_file" else log "进程[$pid]验证正常" fi else log "进程[$pid]异常,释放$lock_file" rm "$lock_file" fi else log "未发现$lock_file" fi