CentOS系统定期清理方法
临时文件主要存储在/tmp、/var/tmp及用户主目录的.cache、.local/share/Trash目录中,定期清理可快速释放磁盘空间。
rm命令删除目录下文件(谨慎操作,避免误删系统文件):sudo rm -rf /tmp/* /var/tmp/* # 清理系统临时目录
rm -rf ~/.cache/* ~/.local/share/Trash/* # 清理用户临时文件
systemd-tmpfiles(CentOS 7及以上)根据配置规则自动清理,也可通过tmpwatch工具删除指定时间未访问的文件:sudo systemd-tmpfiles --clean # 按系统配置清理
sudo yum install tmpwatch && sudo tmpwatch 7d /tmp # 删除7天未访问的/tmp文件
cron每天凌晨3点自动清理:sudo crontab -e
# 添加以下内容
0 3 * * * rm -rf /tmp/* /var/tmp/* && rm -rf ~/.cache/* ~/.local/share/Trash/*
日志文件(如/var/log/messages、/var/log/secure)会随时间增长占用大量空间,可通过以下方式管理:
/etc/logrotate.d/messages_secure):/var/log/messages /var/log/secure {
daily # 每天轮转
rotate 7 # 保留7份旧日志
compress # 压缩旧日志
missingok # 日志丢失不报错
notifempty # 空日志不轮转
create 640 root adm # 新日志权限
}
测试配置是否正确:sudo logrotate -f /etc/logrotate.conf。sudo journalctl --vacuum-time=2weeks # 删除2周前的日志
sudo journalctl --rotate # 手动旋转日志
sudo find /var/log -type f -name "*.log" -mtime +7 -exec rm -f {} \; # 删除7天前的.log文件
包管理器(yum/dnf)的缓存会占用/var/cache空间,定期清理可释放资源:
sudo yum clean all # CentOS 7及以下
sudo dnf clean all # CentOS 8及以上
sudo yum clean metadata # 清理元数据(减少包查询时间)
sudo yum clean packages # 清理下载的包文件
系统缓存(页面缓存、目录项缓存等)会占用内存,清理后可释放内存,但可能短暂影响性能(建议在系统负载低时执行):
sync && echo 3 > /proc/sys/vm/drop_caches # 清理页面缓存、目录项缓存、inode缓存
卸载不再使用的软件包及其依赖,减少系统冗余:
sudo yum autoremove # CentOS 7及以下
sudo dnf autoremove # CentOS 8及以上
旧内核会占用/boot分区空间,保留当前使用的最新内核即可:
sudo package-cleanup --oldkernels --count=1 # 保留1个最新内核,删除其余旧内核
将常用清理命令整合为脚本(如/usr/local/bin/cleanup.sh),通过cron定期执行:
#!/bin/bash
# 清理临时文件
rm -rf /tmp/* /var/tmp/*
# 清理日志
journalctl --vacuum-time=3d
# 清理包缓存
yum clean all
# 清理系统缓存
sync && echo 3 > /proc/sys/vm/drop_caches
赋予脚本执行权限:sudo chmod +x /usr/local/bin/cleanup.sh。
添加cron任务(每天凌晨2点执行):
sudo crontab -e
# 添加以下内容
0 2 * * * /usr/local/bin/cleanup.sh >> /var/log/cleanup.log 2>&1
rm -rf:避免删除系统关键文件(如/etc、/boot目录下的文件)。find /tmp -type f -mtime +7)。