温馨提示×

ubuntu如何清空nodejs日志

小樊
44
2026-09-18 14:49:45
栏目: 编程语言

在 Ubuntu 上“清空 Node.js 日志”要看日志是写在哪里的。下面按常见情况给你说明。


一、Node.js 自己写的日志文件(最常见)

如果你的 Node.js 程序用代码把日志写到了文件,例如:

/var/log/myapp/app.log

1️⃣ 直接清空文件(推荐)

> /var/log/myapp/app.log

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

✅ 好处:文件还在,inode 不变,正在运行的 Node 进程还能继续写


2️⃣ 不要直接 rm 日志

rm app.log   # ❌ 不推荐

如果 Node 进程还开着文件,日志会继续写到已删除的文件,磁盘不会释放。


二、使用 PM2 的日志

如果你用 PM2 启动 Node.js:

pm2 logs

日志一般在:

~/.pm2/logs/

清空 PM2 日志

pm2 flush

✅ 清空所有 PM2 日志
✅ 不影响正在运行的服务


三、系统日志(journalctl)

如果 Node.js 是通过 systemd 启动的:

journalctl -u your-node-service

清空 systemd 日志

sudo journalctl --vacuum-time=1s

或清空某个服务:

sudo journalctl --vacuum-size=1M

四、Docker 中的 Node.js 日志

如果你是 Docker 容器:

docker logs <container_id>

清空 Docker 日志

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

五、推荐做法(最佳实践)

✅ 使用 log rotate

sudo apt install logrotate

示例 /etc/logrotate.d/nodeapp

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

copytruncate 非常适合 Node.js。


总结

场景 清空方式
普通日志文件 truncate -s 0 file.log
PM2 pm2 flush
systemd journalctl --vacuum-time
Docker truncate LogPath
长期方案 logrotate

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

  • Node 怎么启动的(pm2 / systemd / 手动)
  • 日志文件路径

我可以给你精确命令

0