请求配置Perforce Checkpoint新增文件实时通知DL或指定群组
实现Perforce Checkpoint文件新增时的自动邮件通知
方法1:用inotify-tools实时监控(推荐)
该方法能在文件创建瞬间触发通知,延迟极低。
安装inotify-tools
- Debian/Ubuntu系统:
sudo apt update && sudo apt install inotify-tools - RHEL/CentOS/Rocky Linux系统:
sudo dnf install inotify-tools
- Debian/Ubuntu系统:
编写监控脚本
创建脚本/usr/local/bin/p4_checkpoint_notify.sh,内容如下:#!/bin/bash MONITOR_DIR="/p4/1/checkpoints" DL_EMAIL="your-dl-group@example.com" # 监控目录的文件创建事件,过滤目标格式文件 inotifywait -m -e create --format '%f' "$MONITOR_DIR" | while read FILENAME; do if [[ "$FILENAME" =~ ^p4_1\.ckp\.[0-9]+\.gz$ ]]; then # 发送通知邮件 echo "Perforce Checkpoint文件已新增:$MONITOR_DIR/$FILENAME" | mailx -s "【Perforce】新Checkpoint文件生成" "$DL_EMAIL" fi done配置脚本权限与后台运行
- 赋予执行权限:
chmod +x /usr/local/bin/p4_checkpoint_notify.sh - 后台启动并持久化(可添加到systemd实现开机自启):
nohup /usr/local/bin/p4_checkpoint_notify.sh > /var/log/p4_checkpoint_notify.log 2>&1 &
- 赋予执行权限:
方法2:定时检查(适合无法使用inotify的环境)
如果服务器不支持inotify,可通过crontab定时扫描目录,对比文件变化:
编写检查脚本
创建脚本/usr/local/bin/p4_checkpoint_check.sh:#!/bin/bash MONITOR_DIR="/p4/1/checkpoints" DL_EMAIL="your-dl-group@example.com" LAST_CHECK_FILE="/var/tmp/p4_checkpoint_last.list" # 生成当前目录下的目标文件列表 CURRENT_FILES=$(ls "$MONITOR_DIR"/p4_1.ckp.*.gz 2>/dev/null) # 首次运行初始化记录文件 if [ ! -f "$LAST_CHECK_FILE" ]; then echo "$CURRENT_FILES" > "$LAST_CHECK_FILE" exit 0 fi # 对比找出新增文件 NEW_FILES=$(comm -13 <(sort "$LAST_CHECK_FILE") <(echo "$CURRENT_FILES" | sort)) if [ -n "$NEW_FILES" ]; then echo "以下Perforce Checkpoint文件已新增: $NEW_FILES" | mailx -s "【Perforce】新Checkpoint文件生成" "$DL_EMAIL" # 更新记录文件 echo "$CURRENT_FILES" > "$LAST_CHECK_FILE" fi配置crontab定时执行
编辑用户crontab:crontab -e添加以下内容(每分钟检查一次,可按需调整频率):
* * * * * /usr/local/bin/p4_checkpoint_check.sh > /dev/null 2>&1
注意事项
- 确保服务器已配置好邮件发送服务(如postfix),
mailx命令可正常发送邮件。 - 替换脚本中的
your-dl-group@example.com为实际的邮件分发列表地址。 - 可调整日志路径,方便后续排查问题。
内容的提问来源于stack exchange,提问作者Manu Mishra
相关产品推荐
相关产品推荐

