You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

shell爬虫场景下如何统计jpg图片被打开的总次数

统计JPG文件累计打开次数的实现方案

首先需要明确前提:默认Linux文件系统(ext4/XFS等)不会持久化存储文件的累计打开总次数,仅会保留最后一次访问的时间戳(atime)。如果未提前配置审计或监控规则,无法回溯历史累计打开次数。以下是两种可落地的实现方案:

方案1:使用auditd审计工具(推荐,适合长期稳定统计)

auditd是Linux系统自带的审计框架,可精准记录所有文件访问事件:

  • 第一步:安装auditd
    Debian/Ubuntu系列:apt install -y auditd
    CentOS/RHEL系列:yum install -y audit
  • 第二步:添加JPG文件访问监控规则
    auditctl -w /你的爬虫图片存储目录绝对路径 -p r -k jpg_access
    
    参数说明:-w指定要监控的目录,-p r表示监控读操作(打开读取图片即触发),-k jpg_access给事件打自定义标签方便后续过滤
  • 第三步:统计累计打开次数
    执行以下命令即可输出所有jpg文件从规则添加后开始的累计打开次数:
    ausearch -k jpg_access -f .jpg | grep -c 'type=PATH'
    

方案2:使用inotifywait轻量监控(适合临时统计)

不需要复杂的审计配置,适合短期临时统计场景:

  • 第一步:安装inotify监控工具
    Debian/Ubuntu系列:apt install -y inotify-tools
    CentOS/RHEL系列:yum install -y inotify-tools
  • 第二步:启动监控并记录访问日志
    nohup inotifywait -m -e open /你的爬虫图片存储目录绝对路径/*.jpg | while read path action file; do
      [[ "$file" =~ \.jpg$ ]] && echo "$(date +%s) $file" >> /tmp/jpg_access.log
    done &
    
    该命令会后台运行,所有jpg的打开事件都会写入日志文件
  • 第三步:统计累计打开次数
    wc -l /tmp/jpg_access.log | awk '{print $1}'
    

附加说明

如果仅需要统计当前时刻正在被打开的jpg数量,直接使用lsof命令即可:

lsof /你的爬虫图片存储目录绝对路径/*.jpg 2>/dev/null | wc -l

另外你之前统计jpg总数量的命令find *.jpg | wc -l存在兼容问题(遇到带空格/换行的文件名会统计错误),更稳妥的写法是:

find . -maxdepth 1 -type f -name "*.jpg" -printf '.' | wc -c

内容的提问来源于stack exchange,提问作者MadHon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 08:06:00