温馨提示×

如何清理Debian Nodejs日志

小樊
37
2026-07-13 03:43:07
栏目: 编程语言

在 Debian 系统上清理 Node.js 日志,主要取决于日志的存放位置和方式。下面按常见场景给你一个完整、可操作的清理方案。


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

1️⃣ 常见日志位置

场景 日志位置
应用自己写日志 /var/log/myapp/
PM2 管理 ~/.pm2/logs/
systemd 服务 journalctl
Docker 容器 docker logs
Nginx 反向代理 /var/log/nginx/

二、清理 Node.js 应用日志(最常见)

1️⃣ 查看日志文件

ls -lh /var/log/myapp/

2️⃣ 清空日志(不删除文件)

推荐方式(不影响正在运行的程序)

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

或:

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

3️⃣ 删除旧日志

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

⚠️ 不建议直接 rm app.log,可能导致 Node.js 进程继续写文件但磁盘不释放。


三、PM2 方式运行的 Node.js 日志

1️⃣ 查看日志路径

pm2 logs
pm2 list

日志一般在:

~/.pm2/logs/

2️⃣ 清空 PM2 日志

pm2 flush

✅ 安全、官方推荐


3️⃣ 限制 PM2 日志大小(防止再次爆满)

pm2 install pm2-logrotate

配置示例:

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

四、systemd 管理的 Node.js 服务

1️⃣ 查看日志

journalctl -u your-node-service -f

2️⃣ 清理 systemd 日志

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

✅ 这是正确清理方式,不要手动删 /var/log/journal


五、Docker 中的 Node.js 日志

1️⃣ 查看日志

docker logs <container_id>

2️⃣ 清理 Docker 日志

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

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

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

六、防止日志再次占满磁盘(重要)

✅ 推荐做法

  1. 使用日志轮转(logrotate)
  2. 不要无限写日志
  3. 生产环境使用 PM2 / systemd

logrotate 示例

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

八、如果你愿意,我可以帮你:

  • ✅ 判断你当前 Node.js 的日志方式
  • ✅ 写一份 适合你项目的 logrotate 配置
  • ✅ 分析磁盘被占满的真实原因

你可以直接贴:

ps aux | grep node

du -sh /var/log/*

0