树莓派基于inotify实现目录监控及PDF自动处理脚本编写求助
实现方案
1. 前置依赖安装
首先确认你的树莓派已经安装所需工具,执行以下命令:
sudo apt update && sudo apt install inotify-tools postfix mailutils -y
安装postfix过程中选择「Internet Site」配置,按提示完成发件域名设置即可
2. 完整可运行脚本
你可以直接复制以下内容保存为monitor_pdf.sh,按注释修改对应自定义参数即可:
#!/bin/bash # 自定义参数区,按需修改 MONITORDIR="/path/to/your/monitor/dir" # 要监控的目录 TARGETDIR="/path/to/your/target/dir" # 匹配后文件移动的目标目录 KEYWORD="你的指定关键词" # 文件名需要包含的关键词 RECIPIENT_EMAIL="your@receive.email" # 接收通知的邮箱 # 提前创建目标目录避免不存在报错 mkdir -p "${TARGETDIR}" # 监控逻辑 inotifywait -m -r -e close_write --format '%w%f' "${MONITORDIR}" | while read NEWFILE do # 提取纯文件名(不含路径) FILENAME=$(basename "${NEWFILE}") # 匹配规则:后缀为.pdf 且 文件名包含指定关键词 if [[ "${FILENAME}" == *.pdf && "${FILENAME}" == *"${KEYWORD}"* ]]; then # 移动文件到目标目录 mv "${NEWFILE}" "${TARGETDIR}/" # 发送通知邮件 echo "已匹配到新增符合规则的PDF文件:${FILENAME},已移动到目标目录${TARGETDIR}" | mail -s "PDF文件监控通知" "${RECIPIENT_EMAIL}" fi done
这里把inotifywait的触发事件从create改成了close_write,避免文件还在写入过程中就触发动作导致移动文件出错
3. 脚本使用方法
- 给脚本加执行权限:
chmod +x monitor_pdf.sh - 测试运行:直接执行
./monitor_pdf.sh,往监控目录放符合规则的文件测试功能是否正常 - 如需开机自启,可以把脚本注册为systemd服务,或者加到
/etc/rc.local中
注意事项
- 运行脚本的用户需要拥有监控目录的读权限、目标目录的写权限
- 请提前测试postfix发信功能正常,可以执行
echo "测试邮件" | mail -s "测试" 你的邮箱验证 - 如果关键词有特殊字符,需要加转义符处理
内容的提问来源于stack exchange,提问作者Vivien
相关产品推荐
相关产品推荐

