CentOS设置自动回收机制的常见场景及步骤
通过trash-cli工具实现安全的文件删除(移动至回收站而非直接删除),并设置自动清空:
sudo yum install -y trash-cli
crontab(crontab -e),添加以下内容(每天凌晨0点清空回收站,保留30天):0 0 * * * /usr/bin/trash-empty -d 30
说明:trash-empty -d 30表示删除回收站中超过30天的文件。若需将删除文件移动至用户主目录下的.trash文件夹:
mkdir -p ~/.local/share/Trash/files
mkdir -p ~/.local/share/Trash/info
/usr/local/bin/trash):#!/bin/bash
for file in "$@"; do
mv "$file" ~/.local/share/Trash/files/
done
赋予执行权限:sudo chmod +x /usr/local/bin/trash。rm命令:~/.bashrc,添加别名:alias rm='trash'
重新加载配置:source ~/.bashrc。针对/tmp、/var/tmp等系统临时目录,通过systemd-tmpfiles设置自动清理规则:
/etc/tmpfiles.d/local.conf):# 清理/tmp目录下超过14天的文件(每天执行一次)
D /tmp 14d
# 清理/var/tmp目录下超过7天的文件(每周执行一次)
D /var/tmp 7d
sudo systemd-tmpfiles --clean
系统会自动根据配置的时间间隔执行清理。通过cron定时任务定期释放内存缓存(需root权限):
/usr/local/bin/clear_cache.sh):#!/bin/bash
sync && echo 3 > /proc/sys/vm/drop_caches
echo "$(date): Memory cache cleared" >> /var/log/clear_cache.log
赋予执行权限:sudo chmod +x /usr/local/bin/clear_cache.sh。crontab -e):0 3 * * * /usr/local/bin/clear_cache.sh
说明:echo 3 > /proc/sys/vm/drop_caches会清理PageCache、Buffers和Slab内存。编写脚本清理/tmp、/var/log、包缓存、旧内核等垃圾文件:
/usr/local/bin/full_cleanup.sh):#!/bin/bash
LOG_FILE="/var/log/full_cleanup.log"
echo "Cleanup started at $(date)" >> $LOG_FILE
# 清理/tmp目录
rm -rf /tmp/*
echo "$(date): /tmp cleaned" >> $LOG_FILE
# 清理7天前的日志文件
find /var/log -type f -name "*.log" -mtime +7 -exec rm -f {} \;
echo "$(date): Old logs cleaned" >> $LOG_FILE
# 清理YUM缓存
yum clean all >> $LOG_FILE 2>&1
echo "$(date): YUM cache cleaned" >> $LOG_FILE
# 清理旧内核(保留当前运行的内核)
package-cleanup --oldkernels --count=1 -y >> $LOG_FILE 2>&1
echo "$(date): Old kernels cleaned" >> $LOG_FILE
echo "Cleanup completed at $(date)" >> $LOG_FILE
赋予执行权限:sudo chmod +x /usr/local/bin/full_cleanup.sh。crontab -e):0 4 * * 0 /usr/local/bin/full_cleanup.sh
说明:package-cleanup --oldkernels需安装yum-utils(sudo yum install -y yum-utils)。/var/log、/home等关键目录,防止数据丢失。/tmp、/var/log)需使用root权限,清理用户目录可使用普通用户权限。tail -f /var/log/cleanup.log实时查看清理进度,及时排查问题。