在 Linux 里清理 Node.js 日志,常见做法分几种情况,下面按实际使用场景给你说明:
如果你是这样写的:
console.log(...)
并且通过重定向或日志库写到了文件,比如:
node app.js > app.log 2>&1
> app.log
或
truncate -s 0 app.log
⚠️ 不要直接 rm app.log
否则 Node.js 还在占用文件句柄,日志还会继续写“已删除的文件”,磁盘不释放。
以 winston + winston-daily-rotate-file 为例:
new DailyRotateFile({
filename: 'logs/app-%DATE%.log',
datePattern: 'YYYY-MM-DD',
maxFiles: '14d'
})
自动保留 14 天,不用手动清。
pm2 flush
清空所有 PM2 日志。
或单独清:
pm2 flush app
PM2 日志位置:
~/.pm2/logs/
journalctl -u yourapp.service --vacuum-time=7d
或清空:
journalctl --rotate
journalctl --vacuum-size=100M
例如每周清理 7 天前的日志:
0 3 * * 0 find /var/log/node -name "*.log" -mtime +7 -delete
lsof | grep node | grep log
或
ps aux | grep node
| 场景 | 做法 |
|---|---|
| 手动清 | > logfile |
| PM2 | pm2 flush |
| 长期方案 | 日志轮转 |
| 千万别 | 直接 rm 正在写的日志 |
如果你愿意,可以告诉我:
我可以给你精确命令。