首页主机资讯CentOS回收站怎么监控

CentOS回收站怎么监控

时间2025-11-24 14:30:04发布访客分类主机资讯浏览335
导读:CentOS 回收站监控与告警实战 一、监控目标与总体思路 明确对象:区分图形会话回收站(如 GNOME 的 ~/.local/share/Trash/)与命令行回收站(如 trash-cli 的同路径)。无桌面环境的服务器通常只有命令行...

CentOS 回收站监控与告警实战

一、监控目标与总体思路

  • 明确对象:区分图形会话回收站(如 GNOME~/.local/share/Trash/)与命令行回收站(如 trash-cli 的同路径)。无桌面环境的服务器通常只有命令行回收站。
  • 监控维度:
    • 容量:回收站目录当前占用大小。
    • 数量:回收站中文件/目录个数。
    • 滞留时间:文件在回收站中的存放时长。
    • 删除行为:谁在何时删了什么(需要审计/增强手段)。
  • 处置动作:达到阈值时告警自动清理最旧文件拒绝删除
  • 说明:Linux 默认没有统一的图形化回收站;命令行推荐使用 trash-cli,桌面环境可用 gvfs-trash

二、快速落地方案(命令行回收站 + 定时巡检)

  • 安装与确认路径
    • 安装 trash-cli:sudo yum install -y trash-cli
    • 回收站目录:~/.local/share/Trash/files(内容)与 ~/.local/share/Trash/info(元数据,含删除时间等)。
  • 容量阈值巡检脚本(示例阈值 100MB
    • 保存为:/usr/local/bin/check_trash.sh
      #!/usr/bin/env bash
      set -Eeuo pipefail
      
      TRASH_DIR="${
      TRASH_DIR:-$HOME/.local/share/Trash/files}
      "
      MAX_KB=102400   # 100MB
      LOG="/var/log/trash-monitor.log"
      HOST=$(hostname)
      
      ts() {
           date '+%F %T';
       }
          
      
      if [[ ! -d "$TRASH_DIR" ]];
           then
        echo "$(ts) WARN: Trash dir not found: $TRASH_DIR" >
          >
           "$LOG"
        exit 0
      fi
      
      cur_kb=$(du -sk "$TRASH_DIR" 2>
      /dev/null | awk '{
      print $1}
          ')
      if (( cur_kb >
           MAX_KB ));
       then
        msg="CRIT: Trash usage ${
      cur_kb}
          KB >
       ${
      MAX_KB}
          KB (threshold) on $HOST"
        echo "$(ts) $msg" >
          >
           "$LOG"
        # 示例:发邮件(需本机 MTA 或替换为 Webhook)
        echo "$msg" | mail -s "Trash Alert $HOST" admin@example.com 2>
          /dev/null || true
        # 可选:清理最旧文件(按修改时间),直到低于阈值
        # find "$TRASH_DIR" -mindepth 1 -printf '%T@ %p\n' | sort -n | cut -d' ' -f2- \
        #   | while IFS= read -r f;
           do du -sk "$TRASH_DIR" | awk -v m="$MAX_KB" '$1<
      =m{
      exit 1}
          ';
           [[ $? -ne 1 ]] &
          &
           rm -rf "$f";
       done
      else
        echo "$(ts) OK: Trash usage ${
      cur_kb}
          KB" >
          >
       "$LOG"
      fi
      
    • 赋权:sudo chmod +x /usr/local/bin/check_trash.sh
    • 加入定时任务(每 10 分钟巡检一次):
      • sudo crontab -e 添加:*/10 * * * * /usr/local/bin/check_trash.sh
  • 滞留时间巡检脚本(示例:清理 7 天前)
    • 保存为:/usr/local/bin/cleanup_trash.sh
      #!/usr/bin/env bash
      set -Eeuo pipefail
      TRASH_DIR="${
      TRASH_DIR:-$HOME/.local/share/Trash/files}
      "
      MAX_AGE_DAYS=7
      LOG="/var/log/trash-cleanup.log"
      ts() {
           date '+%F %T';
       }
          
      
      if [[ -d "$TRASH_DIR" ]];
           then
        cnt=$(find "$TRASH_DIR" -mindepth 1 -mtime +"$MAX_AGE_DAYS" -print -quit | wc -l)
        if (( cnt >
           0 ));
           then
          echo "$(ts) INFO: Removing $cnt items older than $MAX_AGE_DAYS days" >
          >
           "$LOG"
          find "$TRASH_DIR" -mindepth 1 -mtime +"$MAX_AGE_DAYS" -delete
        fi
      fi
      
    • 赋权并加入 cron(每天 02:00 清理):0 2 * * * /usr/local/bin/cleanup_trash.sh
  • 说明:上述路径与命令适用于 trash-cli;若使用自定义 .trash 目录,只需将脚本中的 TRASH_DIR 改为你的目录即可。

三、进阶方案(审计级监控与自动拦截)

  • 审计谁在删除什么(系统级)
    • 使用 auditd 记录 unlink/rmdir 等调用,便于追溯:
      • 添加规则:sudo auditctl -a always,exit -S unlink -S rmdir -k rm_audit(持久化写入 /etc/audit/rules.d/audit.rules
      • 查询:ausearch -k rm_audit | tail -n 50
    • 注意:审计会产生日志开销,建议按需开启并配合日志轮转。
  • 拦截危险的 rm 并转入回收站(更安全删除)
    • 方式 A:用 trash-cli 替代 rm(推荐)
      • 在交互式 shell 中:alias rm='trash'(或放入 /etc/bashrc/~/.bashrc 统一生效)
    • 方式 B:自定义 rm 包装脚本(示例)
      #!/usr/bin/env bash
      TRASH="$HOME/.local/share/Trash/files"
      mkdir -p "$TRASH"
      for f in "$@";
           do
        if [[ -e "$f" ]];
           then
          mv -t "$TRASH" "$f"
        fi
      done
      
  • 桌面会话回收站监控(GNOME)
    • 若使用 gvfs-trash,回收站同样位于用户主目录的 ~/.local/share/Trash/;可直接复用上面的容量/时间巡检脚本。
    • 列出/查看回收站内容可用:gvfs-trash --listgvfs-trash --info < uri> (需 GUI 会话与相应组件)。

四、可视化与告警集成

  • 日志到可视化:将 /var/log/trash-*.log 接入 rsyslogFluent Bit,再由 Grafana Loki/Prometheus 展示趋势图(如:按主机/用户统计回收站大小与清理次数)。
  • 告警渠道:
    • 邮件:脚本内使用 mail 命令(需配置本地 MTA 或 SMTP)。
    • 企业微信/钉钉/Slack:脚本内调用 Webhook,发送 Markdown 告警卡片。
  • 容量治理联动:当回收站容量告警时,可自动触发“清理最旧 N 个文件”或“拒绝新删除”的策略,避免磁盘被占满影响业务。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: CentOS回收站怎么监控
本文地址: https://pptw.com/jishu/754461.html
CentOS回收站怎么故障排除 CentOS回收站怎么优化

游客 回复需填写必要信息