Debian如何定期回收系统
导读:Debian定期回收系统的实用方案 一 核心清理项与推荐频率 下表给出常见可回收资源、命令与建议频率,便于直接落地执行或纳入定时任务。 清理项 推荐命令 建议频率 说明 APT缓存与无用包 sudo apt-get cle...
Debian定期回收系统的实用方案
一 核心清理项与推荐频率
- 下表给出常见可回收资源、命令与建议频率,便于直接落地执行或纳入定时任务。
| 清理项 | 推荐命令 | 建议频率 | 说明 |
|---|---|---|---|
| APT缓存与无用包 | sudo apt-get clean & & sudo apt-get autoclean & & sudo apt-get autoremove --purge | 每周 | 清理下载的包缓存与不再需要的依赖,–purge同时移除配置文件 |
| systemd日志 | sudo journalctl --vacuum-time=7d 或 --vacuum-size=100M | 每周 | 限制系统日志体积,避免无限增长 |
| 临时文件 | find /tmp -mindepth 1 -mtime +7 -delete 与 find /var/tmp -mindepth 1 -mtime +7 -delete | 每日 | 删除超过7天未访问的临时文件,先确保无业务占用 |
| 旧内核 | 先 uname -r 确认当前内核;再用 apt-get purge linux-image-< 旧版本> linux-headers-< 旧版本> | 每次内核升级后 | 建议保留当前与上一个版本,避免回滚失败 |
| 大文件巡检 | du -sh /* 或 ncdu / | 每月 | 发现异常大文件或目录,人工确认后清理 |
| Snap旧修订 | 见下方脚本 | 每月 | 清理已禁用快照的旧修订,释放空间 |
| SSD TRIM | fstrim -v / | 每周 | 通知SSD回收未使用块,提升寿命与写入性能 |
以上命令与频率来自Debian常见清理实践与自动化方案,适用于大多数服务器与桌面环境。
二 自动化方式一 Cron
- 适合简单、稳定的周期任务。示例(root 的 crontab -e):
# 每天 02:00 清理 APT
0 2 * * * /usr/bin/apt-get -qq clean &
&
/usr/bin/apt-get -qq autoclean &
&
/usr/bin/apt-get -qq autoremove --purge
# 每天 03:00 清理 systemd 日志(保留7天或100MB)
0 3 * * * /usr/bin/journalctl --vacuum-time=7d --quiet || /usr/bin/journalctl --vacuum-size=100M --quiet
# 每天 04:00 清理临时文件(/tmp 与 /var/tmp,7天未访问)
0 4 * * * /usr/bin/find /tmp -mindepth 1 -mtime +7 -delete
0 4 * * * /usr/bin/find /var/tmp -mindepth 1 -mtime +7 -delete
# 每周日 01:00 执行大文件巡检(生成报告,不自动删除)
0 1 * * 0 /usr/bin/ncdu -x / >
/var/log/ncdu-$(date +\%F).txt 2>
/dev/null
# 每周六 02:30 对根分区执行 TRIM
30 2 * * 6 /usr/sbin/fstrim -v / >
>
/var/log/fstrim.log 2>
&
1
- 提示:
- 将脚本或命令路径使用绝对路径(如 which apt-get、which journalctl、which fstrim)更稳妥。
- 生产环境建议先以“–dry-run”或输出到日志的方式观察一段时间,再改为静默执行。
三 自动化方式二 systemd 定时器
- 适合需要依赖管理、日志与开机自启控制的场景。
- 创建服务单元 /etc/systemd/system/cleanup.service:
[Unit]
Description=Periodic system cleanup
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/bin/apt-get -qq clean
ExecStart=/usr/bin/apt-get -qq autoclean
ExecStart=/usr/bin/apt-get -qq autoremove --purge
ExecStart=/usr/bin/journalctl --vacuum-time=7d --quiet
ExecStart=/usr/bin/find /tmp -mindepth 1 -mtime +7 -delete
ExecStart=/usr/bin/find /var/tmp -mindepth 1 -mtime +7 -delete
- 创建定时器 /etc/systemd/system/cleanup.timer:
[Unit]
Description=Run cleanup daily at 02:00
Requires=cleanup.service
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
[Install]
WantedBy=timers.target
- 启用与启动:
sudo systemctl daemon-reload
sudo systemctl enable --now cleanup.timer
sudo systemctl list-timers cleanup.timer
- 说明:如需更复杂的依赖或条件判断,可在 service 中编写脚本,再由 timer 触发。
四 关键注意事项
- 清理 /tmp 与 /var/tmp 前,确认无服务正在写入;优先使用按时间删除(如 +7 天)而非粗暴清空,避免影响运行中程序。
- 删除旧内核务必保留当前与上一个版本,先通过 uname -r 确认版本,再执行 purge,避免无法回滚。
- 日志清理以 systemd-journald 为主(journalctl),应用日志仍建议依赖 logrotate 做按日轮转与压缩,二者配合更稳妥。
- 若使用 Snap,旧修订可能长期占用空间,可按如下方式清理(谨慎执行,避免误删正在使用的修订):
#!/usr/bin/env bash
LANG=C snap list --all | awk '/disabled/{
print $1, $3}
' | \
while read snapname revision;
do
sudo snap remove "$snapname" --revision="$revision"
done
- 建议将清理频率与保留策略写入运维手册,并保留清理日志(如 /var/log/cleanup.log),便于审计与回溯。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian如何定期回收系统
本文地址: https://pptw.com/jishu/764082.html
