温馨提示×

Nodejs日志Debian如何清理

小樊
46
2026-07-27 13:57:00
栏目: 编程语言

在 Debian 系统上清理 Node.js 日志,常见做法取决于日志的存放位置、生成方式(应用自身 / PM2 / systemd / Docker 等)。下面按常见场景给你一套完整、安全的清理方案。


一、先确认 Node.js 日志在哪里

1️⃣ 常见日志路径

/var/log/node/
/var/log/myapp/
~/myapp/logs/

或应用目录中:

logs/
log/

2️⃣ 查看哪些文件在增长

du -sh /var/log/*
find / -name "*.log" -size +100M 2>/dev/null

二、手动清理 Node.js 日志(不推荐直接 rm)

✅ 推荐方式(清空内容,不删文件)

truncate -s 0 app.log
# 或
: > app.log

优点

  • 不影响正在运行的 Node 进程
  • 不会破坏文件句柄

避免

rm app.log

如果 Node 仍在写入,磁盘空间不会立即释放


三、按运行方式清理日志


1️⃣ Node.js 直接运行(前台 / nohup)

清理

truncate -s 0 nohup.out

防止再次暴涨

nohup node app.js > /dev/null 2>&1 &

2️⃣ PM2 管理的 Node.js(最常见)

查看日志路径

pm2 logs
pm2 info <app_id>

清理 PM2 日志

pm2 flush

限制日志大小(强烈推荐)

pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7

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

查看日志

journalctl -u your-node-service -f

清理 journal 日志

journalctl --vacuum-time=7d
# 或
journalctl --vacuum-size=500M

查看占用

journalctl --disk-usage

四、配置日志轮转(Debian 推荐)

1️⃣ 使用 logrotate(生产必做)

编辑配置:

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

示例:

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

测试配置

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

copytruncate 对 Node.js 非常安全


五、Docker 中的 Node.js 日志

查看日志

docker logs <container_id>

清理(重启容器)

docker restart <container_id>

限制 Docker 日志大小

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "50m",
    "max-file": "3"
  }
}

六、安全清理建议(重要)

✅ 推荐顺序:

  1. truncate -s 0
  2. pm2 flush
  3. logrotate
  4. 最后才考虑 rm

❌ 不要:

  • 直接 rm 正在写入的日志
  • 在生产环境无备份清理

七、快速排查命令合集

# 查看大日志
find / -name "*.log" -size +100M 2>/dev/null

# 清空日志
truncate -s 0 xxx.log

# PM2
pm2 flush

# systemd
journalctl --disk-usage
journalctl --vacuum-time=7d

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

  • ✅ Node.js 是怎么运行的(PM2 / systemd / Docker)
  • ✅ 日志路径
  • ✅ Debian 版本

我可以给你完全定制的一套清理方案

0