最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Linux系统目录清理:针对/var/tmp的自动化脚本实现
时间:2026-07-23 08:53:48 编辑:袖梨 来源:一聚教程网
/var/tmp清理需基于时间阈值(默认7天)、排除关键子目录(如.X11-unix、systemd-private-*)并跳过被进程占用的文件,通过安全find命令+日志记录实现自动化,推荐systemd timer部署。
Linux系统中,/var/tmp 是一个长期保留临时文件的目录(遵循FHS标准,其内容在重启后仍保留),容易因日志、缓存、安装残留等积累大量无用文件,导致磁盘空间紧张。自动化清理需兼顾安全性与实效性——不能误删正在使用的文件,也不能过度保守而失效。
明确清理策略:保留时间 + 文件类型 + 权限过滤
直接 rm -rf /var/tmp/* 极其危险。合理策略应基于:
- 时间阈值:默认清理7天前未访问(atime)且未修改(mtime)的普通文件和空目录;可按需调整为3/14/30天
-
排除关键子目录:如
/var/tmp/.X11-unix、/var/tmp/systemd-private-*等由服务动态创建的运行时目录,需用--exclude或find -path过滤 -
跳过被进程占用的文件:通过
lsof +D /var/tmp检查并跳过,避免“device busy”错误或中断服务
脚本核心逻辑:安全 find + 条件判断 + 日志记录
以下为轻量、可审计的 Bash 脚本骨架(保存为 /usr/local/bin/clean-var-tmp.sh):
#!/bin/bashLOGFILE="/var/log/clean-var-tmp.log"RETENTION_DAYS=7TMP_DIR="/var/tmp"<h1>记录开始时间与磁盘使用情况</h1><p>echo "[$(date)] START: $(df -h $TMP_DIR | awk 'NR==2 {print $5}')" >> "$LOGFILE"</p><h1>查找符合条件的文件(非目录、非socket、非fifo、非设备文件,且未被占用)</h1><p>find "$TMP_DIR" -mindepth 1 -type f -not -name ".<em>" -not -path "$TMP_DIR/.X11-unix/</em>" -not -path "$TMP_DIR/systemd-private-<em>" -not -path "$TMP_DIR/vmware-root-</em>" -atime +$RETENTION_DAYS -mtime +$RETENTION_DAYS -exec lsof -Fn {} ; 2>/dev/null | grep -q 'p' || echo {} | xargs -r rm -f</p><h1>清理空目录(同样排除关键路径)</h1><p>find "$TMP_DIR" -mindepth 1 -type d -empty -not -path "$TMP_DIR/.X11-unix" -not -path "$TMP_DIR/systemd-private-*" -exec rmdir {} + 2>/dev/null</p><p>echo "[$(date)] DONE" >> "$LOGFILE"</p><div class="aritcle_card flexRow"> <div class="artcardd flexRow"> <a class="aritcle_card_img" href="/xiazai/gongju/2398" title="HBuilderX(Linux)"><img src="https://img.php.cn/upload/manual/001/431/639/6a3cc962dbacc854.png" alt="HBuilderX(Linux)" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a> <div class="aritcle_card_info flexColumn"> <a href="/xiazai/gongju/2398" title="HBuilderX(Linux)">HBuilderX(Linux)</a> <p>HBuilderX 是由 DCloud 推出的一款轻量级前端开发工具,在 Linux 系统上主要用于 Web 开发与跨平台应用开发,尤其适合 Vue 和 uni-app 相关项目。</p> </div> <a href="/xiazai/gongju/2398" title="HBuilderX(Linux)" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div>
说明:脚本不强制终止占用文件,而是跳过它们;xargs -r rm -f 避免空输入报错;所有操作前保留磁盘使用率快照,便于事后分析。
部署为定时任务:systemd timer 或 cron
推荐使用 systemd timer 实现更可控的调度(支持日志集成、失败重试):
- 创建定时器单元:
/etc/systemd/system/clean-var-tmp.timer - 对应服务单元:
/etc/systemd/system/clean-var-tmp.service,指定Type=oneshot和ExecStart=/usr/local/bin/clean-var-tmp.sh - 启用:
systemctl daemon-reload && systemctl enable --now clean-var-tmp.timer - 查看状态:
systemctl list-timers clean-var-tmp.timer,日志用journalctl -u clean-var-tmp.service
验证与监控:避免静默失败
自动化清理必须可观测:
- 每次运行后在日志中追加清理前后
du -sh $TMP_DIR结果 - 设置简单告警:若单次清理释放空间 2GB,触发邮件/钉钉通知
- 首次上线前,在测试环境用
find ... -print替代-exec rm,人工核对输出列表
相关文章
- zk助手如何设置悬浮显示 zk助手设置悬浮显示方法 07-28
- 纸箱尺寸计算公式解读 07-28
- 纸箱的十种创意妙用 07-28
- 纸箱妙用手册 07-28
- 宝燕儿童乐园 游玩指南 07-28
- 淘特家电速查技巧 07-28