在 Ubuntu 上排查 Node.js 日志,通常可以从应用日志、系统日志、进程状态、运行时错误几个层面入手。下面按实用顺序给你一套排查思路。
ps -ef | grep node
# 或
top
sudo netstat -tunlp | grep 3000
# 或
sudo lsof -i:3000
node app.js
cat nohup.out
pm2 logs
pm2 logs app-name
pm2 list
pm2 describe app-name
查看代码或启动脚本中是否写了:
fs.createWriteStream('/var/log/node/app.log')
或:
tail -f /var/log/node/app.log
journalctl -u your-node-service -f
journalctl -u your-node-service --since "1 hour ago"
常见错误:
Cannot find moduleEADDRINUSEPermission deniedError: listen EADDRINUSE :::3000
解决:
sudo lsof -i:3000
kill -9 PID
EACCES: permission denied
解决:
sudo nodeFATAL ERROR: Ineffective mark-compacts
查看系统日志:
dmesg | grep -i oom
解决:
node --max-old-space-size=1024 app.js
代码里加:
process.on('uncaughtException', e => {
console.error(e);
});
NODE_DEBUG=http,net,fs node app.js
DEBUG=* node app.js
pm2 或 systemd/var/log/winston / pino 写结构化日志# 1. 进程
ps -ef | grep node
# 2. 日志
pm2 logs
journalctl -u node-app -f
# 3. 端口
sudo lsof -i:3000
# 4. 系统错误
dmesg | tail
如果你能提供:
我可以帮你精准定位问题。