在 Debian 系统上清理 Node.js 日志,常见做法取决于日志的存放位置、生成方式(应用自身 / PM2 / systemd / Docker 等)。下面按常见场景给你一套完整、安全的清理方案。
/var/log/node/
/var/log/myapp/
~/myapp/logs/
或应用目录中:
logs/
log/
du -sh /var/log/*
find / -name "*.log" -size +100M 2>/dev/null
truncate -s 0 app.log
# 或
: > app.log
✅ 优点
❌ 避免
rm app.log
如果 Node 仍在写入,磁盘空间不会立即释放
truncate -s 0 nohup.out
nohup node app.js > /dev/null 2>&1 &
pm2 logs
pm2 info <app_id>
pm2 flush
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7
journalctl -u your-node-service -f
journalctl --vacuum-time=7d
# 或
journalctl --vacuum-size=500M
journalctl --disk-usage
编辑配置:
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 logs <container_id>
docker restart <container_id>
{
"log-driver": "json-file",
"log-opts": {
"max-size": "50m",
"max-file": "3"
}
}
✅ 推荐顺序:
truncate -s 0pm2 flushlogrotaterm❌ 不要:
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
如果你愿意,可以告诉我:
我可以给你完全定制的一套清理方案。