温馨提示×

Linux如何清理Nodejs日志

小樊
44
2026-07-07 10:07:10
栏目: 编程语言

在 Linux 上清理 Node.js 日志,常见做法取决于日志存放在哪里、由谁管理。下面按常见场景给你一套实用方案。


一、先确认日志在哪里

1️⃣ 应用自己写的日志

常见路径:

/var/log/myapp/
/home/user/myapp/logs/

查看:

ls -lh /var/log/myapp

2️⃣ PM2 管理的 Node.js 应用

PM2 默认日志位置:

~/.pm2/logs/

查看:

pm2 logs --lines 0
pm2 list

3️⃣ systemd 管理的 Node.js 服务

日志由 journald 管理:

journalctl -u your-node-service

二、清理 Node.js 日志的方法


✅ 方法一:直接删除日志文件(最简单)

删除指定日志

rm -f /var/log/myapp/*.log

清空日志文件(推荐,不中断程序)

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

或:

: > /var/log/myapp/app.log

优点:不影响正在运行的进程
缺点:文件不会自动变小(inode 还在)


✅ 方法二:PM2 清理日志(最常见)

清空当前日志

pm2 flush

清空指定应用

pm2 flush app_name

重启并清空

pm2 restart app_name

✅ 推荐用于 PM2 部署的 Node 项目


✅ 方法三:systemd 日志清理

查看占用

journalctl --disk-usage

清理旧日志

sudo journalctl --vacuum-time=7d

或按大小:

sudo journalctl --vacuum-size=100M

✅ 方法四:使用 logrotate(生产环境推荐 ✅)

防止日志无限增长。

示例:Node.js 应用日志

sudo vim /etc/logrotate.d/node-app

内容:

/var/log/myapp/*.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
    create 0644 node node
    copytruncate
}

copytruncate 对 Node.js 最安全
✅ 自动轮转、压缩、删除旧日志


✅ 方法五:Docker 中 Node.js 日志

查看 container 日志

docker logs container_id

清理 docker 日志

truncate -s 0 $(docker inspect --format='{{.LogPath}}' container_id)

或限制日志大小(推荐):

logging:
  driver: "json-file"
  options:
    max-size: "10m"
    max-file: "3"

三、不推荐的做法 ❌

❌ 直接 rm -f 正在写入的日志文件
→ 可能导致磁盘空间不释放

❌ 删除 node_modules/.cache 当日志用
→ 不是日志,是依赖缓存


四、快速决策表

场景 推荐方式
PM2 pm2 flush
systemd journalctl --vacuum
自定义日志 logrotate
临时清理 truncate -s 0
Docker 限制日志大小

如果你愿意,可以告诉我:

  • ✅ 是否使用 PM2 / Docker / systemd
  • ✅ 日志路径
  • ✅ 日志增长很快还是偶尔清理

我可以帮你写一份完全适合你服务器的清理方案

0