CentOS 回收站卡顿的定位与解决
一、先快速定位卡顿来源
df -h 与 df -i,若使用率接近 100%,会导致任何文件操作(含回收站列目录、删除)显著变慢。sudo smartctl -a /dev/sdX 查看 Reallocated/Pending 扇区;执行 lsblk -f 确认文件系统类型与挂载选项。iostat -x 1 10,若 %util 长时间接近 100% 或 await 很高,说明磁盘繁忙,回收站列目录/清理会卡。top/htop,关注 load average 与 wa(I/O 等待);内存紧张触发频繁 swap 也会卡顿。tracker3 reset -r 或 systemctl --user restart gvfs-daemon.service。二、最常见根因与对应处理
rm -rf ~/.local/share/Trash/{files,info}/*;建议设置定时清理(见下文脚本)。df -h/df -i 接近满,任何文件操作都慢。/var/log/, journalctl --vacuum-time=7d),扩容磁盘或迁移大目录。iostat 显示高 %util/await,或 smartctl 告警。echo deadline > /sys/block/sdX/queue/scheduler)、排查阵列重建/快照等后台任务。tracker3 reset -r,或暂时关闭缩略图 gsettings set org.gnome.desktop.thumbnail-cache maximum-size 0;必要时重启会话。rm 直接删除;多人共用时行为不一致。trash-cli,统一删除入口并便于自动清理(见下文方案)。三、可落地的优化与配置方案
sudo yum install -y trash-clitrash <file> 替代 rm;trash-list 查看;trash-empty 清空;restore-trash 恢复。~/bin/clean-trash.sh#!/usr/bin/env bash
TRASH="$HOME/.local/share/Trash"
find "$TRASH/files" -mtime +7 -delete 2>/dev/null
find "$TRASH/info" -mtime +7 -delete 2>/dev/null
赋权并加入 crontab(每天 2:00 执行):0 2 * * * $HOME/bin/clean-trash.sh
~/.bashrc 或 /etc/profile.d/trash.sh 中加入:mkdir -p ~/.trash
alias rm='mv -i "$@" ~/.trash/'
alias rl='ls -l ~/.trash/'
alias ur='mv -i ~/.trash/"$@" .'
alias ct='rm -rf ~/.trash/*'
生效:source ~/.bashrc~/bin/clear_trash.sh#!/usr/bin/env bash
TRASH="$HOME/.trash"
find "$TRASH" -type f -mtime +30 -delete 2>/dev/null
加入 crontab(每天 0:00 执行):0 0 * * * $HOME/bin/clear_trash.sh
sudo yum install -y quota
# /etc/fstab 对应挂载点添加 usrquota,grpquota
sudo mount -o remount /home
sudo quotacheck -cum /home
sudo quotaon -v /home
# 限制用户 alice 软/硬限 100M/120M(inode 不限)
sudo setquota -u alice 100M 120M 0 0 /home
四、验证与回退
df -h、df -i、iostat -x 1 5,确认空间与 I/O 恢复;桌面端观察回收站列目录与清空是否顺畅。/bin/rm 执行删除,或在 ~/.bashrc 中移除相关 alias rm 行后 source ~/.bashrc。