在 Debian 系统上清理 Node.js 日志,主要取决于日志的存放位置和方式。下面按常见场景给你一个完整、可操作的清理方案。
| 场景 | 日志位置 |
|---|---|
| 应用自己写日志 | /var/log/myapp/ |
| PM2 管理 | ~/.pm2/logs/ |
| systemd 服务 | journalctl |
| Docker 容器 | docker logs |
| Nginx 反向代理 | /var/log/nginx/ |
ls -lh /var/log/myapp/
✅ 推荐方式(不影响正在运行的程序)
truncate -s 0 /var/log/myapp/app.log
或:
: > /var/log/myapp/app.log
rm -f /var/log/myapp/*.log.*
⚠️ 不建议直接 rm app.log,可能导致 Node.js 进程继续写文件但磁盘不释放。
pm2 logs
pm2 list
日志一般在:
~/.pm2/logs/
pm2 flush
✅ 安全、官方推荐
pm2 install pm2-logrotate
配置示例:
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7
journalctl -u your-node-service -f
journalctl --vacuum-time=7d
# 或
journalctl --vacuum-size=500M
✅ 这是正确清理方式,不要手动删 /var/log/journal
docker logs <container_id>
truncate -s 0 $(docker inspect --format='{{.LogPath}}' <container_id>)
或限制日志大小(推荐):
{
"log-driver": "json-file",
"log-opts": {
"max-size": "50m",
"max-file": "3"
}
}
sudo nano /etc/logrotate.d/node-app
/var/log/myapp/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0640 www-data www-data
}
测试:
logrotate -d /etc/logrotate.d/node-app
| 你的情况 | 清理方式 |
|---|---|
| PM2 | pm2 flush |
| systemd | journalctl --vacuum |
| 普通文件 | truncate -s 0 |
| Docker | truncate 或日志限制 |
| 不确定 | 先 du -sh /var/log |
你可以直接贴:
ps aux | grep node
或
du -sh /var/log/*