如何从其他终端连接nodemon会话,监控Node.js服务日志
解决方案:共享Node.js服务器的控制台会话日志
这个场景我太熟了!直接在SSH终端启动服务器的话,一旦断开连接或者切换终端,就没法再查看实时日志了,给你几个靠谱的方案,从会话共享到日志文件监控都有:
一、用tmux(推荐,功能更强大)
tmux是终端多路复用工具,可以让你在后台持久化运行会话,多个用户能同时连接查看甚至操作。
安装tmux:
- Ubuntu/Debian:
sudo apt-get install tmux - macOS:
brew install tmux - CentOS/RHEL:
sudo yum install tmux
- Ubuntu/Debian:
创建并启动服务器会话:
- 登录SSH服务器后,创建一个命名会话:
tmux new -s server-session(server-session是自定义的会话名,方便识别) - 在这个新会话里,正常启动你的服务器:
npm start,此时控制台会输出日志 - 保持会话在后台运行:按下
Ctrl+B,松开后再按D,这样就可以退出当前终端,但服务器和日志会话会继续在后台运行
- 登录SSH服务器后,创建一个命名会话:
同事连接查看日志:
同事登录SSH服务器后,执行tmux attach -t server-session,就能立即看到服务器的实时控制台日志了。如果有多个会话,先执行tmux ls查看所有会话列表,再指定会话名attach。
二、用screen(经典备选方案)
screen是另一个老牌的终端会话管理工具,用法和tmux类似:
安装screen:
- Ubuntu/Debian:
sudo apt-get install screen - macOS:
brew install screen - CentOS/RHEL:
sudo yum install screen
- Ubuntu/Debian:
创建并启动会话:
- 创建命名会话:
screen -S server-session - 启动服务器:
npm start - 后台运行会话:按下
Ctrl+A,松开后按D
- 创建命名会话:
同事连接查看:
同事登录后执行screen -r server-session即可。如果会话显示已被占用,用screen -d -r server-session强制将原会话detach后再连接。
三、日志文件实时监控(无需会话共享,仅查看)
如果同事只需要查看日志,不需要操作服务器,可以把控制台输出重定向到文件,然后用tail实时监控:
修改package.json的start脚本:
将原来的脚本改成:"start": "concurrently \"tsc && tsc -w\" \"nodemon\" > server.log 2>&1"这里
> server.log把标准输出写入文件,2>&1把错误输出也重定向到同一个文件。同事查看实时日志:
登录SSH后执行tail -f server.log,就能实时看到服务器的所有输出了。如果需要查看历史日志,直接用cat server.log或者less server.log浏览。
内容的提问来源于stack exchange,提问作者Mado Baker
相关产品推荐
相关产品推荐

