跳到主要内容

清理 / 清扫 (clean.sh / node-cleanup.sh)

在磁盘空间不足或需要定期清空日志/临时文件时使用。

容器模式 (2026.05+) 的清理

容器模式下,镜像内部的 logrotate (cronie + /etc/cron.daily/logrotate) 会按 daily / size>100M / 14 天 gzip 的策略自动清理(涵盖全部 8 个组件日志)。UI 中的“临时清理”按钮通过 signal file (/etc/kopens/host-action.request {"action":"tempClean"}) → 由 host 上的 kopens-host-action.path 清空 /data1/pp-temp/* 并重启容器。

Docker 镜像 garbage collection:install.sh 安装的 weekly cron (/etc/cron.weekly/plantpulse-cleanup) 会自动清理超过 30 天的 image / dangling layer / 超过 30 天的 journald。


1. clean.sh — 日志 / 临时文件批量删除

$PE_HOME/bin/clean.sh

删除对象(不涉及 DB / 用户数据 — 安全):

  • server/logs/* (Tomcat)
  • db/logs/* (Cassandra log — sstable 数据保持不变)
  • mqtt/log/*
  • timeseries/*/log/*
  • cache/log/*
  • node/log/*
  • /tmp/*
/tmp/* 批量删除 — 其他用户的临时文件也会一并清除

clean.sh 会清空整个系统/tmp。ssh 会话 socket / systemd-private / X11 / journal 的临时文件也会一并消失。除单人运维的网关主机外请谨慎使用。


2. node-cleanup.sh — Cassandra 磁盘回收

$PE_HOME/bin/node-cleanup.sh

执行内容:

  • nodetool clearsnapshot --all — 回收旧 snapshot 占用的磁盘
  • nodetool cleanup — 移除 token range 变更后不再使用的 sstable

通常 start.sh 会在后台自动调用,但在磁盘不足时可以手动再执行一次。

耗时为分钟级(与 sstable 数量成正比)。会产生一定 I/O 负载 — 建议在采集流量空闲的时段执行。


3. 磁盘不足应对(完整流程)

# 1. 무엇이 차지 중?
df -h
du -sh $PE_HOME/*/log/* /data1/* 2>/dev/null | sort -h | tail -20

# 2. 로그 / 임시 파일 정리
$PE_HOME/bin/clean.sh

# 3. Cassandra 디스크 회수
$PE_HOME/bin/node-cleanup.sh

# 4. 오래된 백업 정리 (30 일 이상)
find /data1/pp-backup -maxdepth 1 -type d -mtime +30 -exec rm -rf {} +

# 5. (옵션) Docker 이미지 / 컨테이너 정리
docker system prune -af

# 6. 결과 확인
df -h

4. 常见陷阱

现象原因 / 解决
执行 clean.sh 后 ssh 突然断开/tmp/* 中的 ssh socket 一起被删除 — 请用新会话重新连接
执行 node-cleanup.sh 后磁盘仍未回收sstable compaction 尚在等待中。用 nodetool compactionstats 确认进度
find /data1/pp-backup -mtime +30 结果为 0 条备份仅存在于最近 30 天内。请调整时间范围(如 -mtime +14)

5. 延伸阅读