在 Ubuntu 上“清空 Node.js 日志”要看日志是写在哪里的。下面按常见情况给你说明。
如果你的 Node.js 程序用代码把日志写到了文件,例如:
/var/log/myapp/app.log
> /var/log/myapp/app.log
或
truncate -s 0 /var/log/myapp/app.log
✅ 好处:文件还在,inode 不变,正在运行的 Node 进程还能继续写
rm 日志rm app.log # ❌ 不推荐
如果 Node 进程还开着文件,日志会继续写到已删除的文件,磁盘不会释放。
如果你用 PM2 启动 Node.js:
pm2 logs
日志一般在:
~/.pm2/logs/
pm2 flush
✅ 清空所有 PM2 日志
✅ 不影响正在运行的服务
如果 Node.js 是通过 systemd 启动的:
journalctl -u your-node-service
sudo journalctl --vacuum-time=1s
或清空某个服务:
sudo journalctl --vacuum-size=1M
如果你是 Docker 容器:
docker logs <container_id>
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 |
如果你愿意,可以告诉我:
我可以给你精确命令。