一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

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-* 等由服务动态创建的运行时目录,需用 --excludefind -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=oneshotExecStart=/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,人工核对输出列表

热门栏目