温馨提示×

Nodejs日志Ubuntu如何清理

小樊
32
2026-08-20 11:40:24
栏目: 编程语言

在 Ubuntu 上清理 Node.js 日志,常见做法取决于日志是如何产生的。下面按常见场景给你一套完整方案,从“最安全”到“最彻底”。


一、先看日志在哪(很重要)

1️⃣ PM2 管理的 Node.js 服务(最常见)

PM2 默认把日志放在:

~/.pm2/logs/

查看:

ls -lh ~/.pm2/logs/

示例:

app-error.log
app-out.log

2️⃣ Systemd 管理的 Node.js 服务

日志由 journald 管理:

journalctl -u your-node-service

3️⃣ Docker 容器中的 Node.js

日志通常在:

/var/lib/docker/containers/

或 stdout(不写文件)


4️⃣ 应用自己写的日志文件

例如:

/var/log/myapp/
logs/

二、清理 Node.js 日志(按场景)


✅ 场景一:PM2 日志清理(推荐)

✅ 方法 1:PM2 官方命令(最安全 ✅)

pm2 flush

✅ 清空所有 PM2 日志
✅ 不删文件,只清内容
✅ 不影响服务运行


✅ 方法 2:只清空某个应用

pm2 flush app-name

✅ 方法 3:手动清空(不重启)

truncate -s 0 ~/.pm2/logs/app-out.log
truncate -s 0 ~/.pm2/logs/app-error.log

❗ 不要直接 rm,否则 PM2 可能继续写旧 inode


✅ 场景二:Systemd Node.js 日志清理

查看占用

journalctl --disk-usage

清理旧日志

sudo journalctl --vacuum-time=7d

sudo journalctl --vacuum-size=500M

✅ 场景三:普通日志文件清理

清空(推荐 ✅)

sudo truncate -s 0 /var/log/myapp/app.log

删除(不推荐 ❌)

rm /var/log/myapp/app.log

⚠️ 如果程序仍在运行,可能继续占用磁盘


三、防止日志再次撑满磁盘(非常重要)

✅ 1️⃣ PM2 配置日志轮转(强烈推荐)

pm2 install pm2-logrotate

常见配置:

pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7
pm2 set pm2-logrotate:compress true

✅ 自动按大小切割
✅ 自动删除旧日志


✅ 2️⃣ Node.js 应用层控制

使用日志库(如 winston / pino):

  • 按日期切割
  • 限制文件数量
  • 自动压缩

四、快速排查磁盘被日志占满(实战)

查看磁盘

df -h

找出大日志文件

sudo find / -type f -name "*.log" -size +100M

实时查看日志增长

tail -f ~/.pm2/logs/app-out.log

五、我可以帮你精准操作 ✅

你可以直接告诉我:

1️⃣ 用的是什么启动方式?(PM2 / systemd / Docker / 直接 node)
2️⃣ Ubuntu 版本
3️⃣ 磁盘占用情况(df -h 输出)

我可以给你一条不重启、不翻车的清理命令 ✅

0