如何在Ubuntu服务器后台启动Node TypeScript的Express API进程
Express API 进程后台运行解决方案
方案1:临时测试用(nohup 方式,无需额外安装工具)
- 直接执行命令即可后台启动,关闭终端不会终止进程:
nohup node --inspect -r ts-node/register server.ts > run.log 2>&1 & - 参数说明:
nohup会忽略终端挂断信号,> run.log将程序输出写入日志文件,2>&1合并错误输出到普通日志,末尾的&表示后台运行 - 停止进程操作:先执行
ps aux | grep server.ts找到对应的进程PID,再执行kill 对应PID即可终止
方案2:需保留终端交互(screen 方式,可随时切回运行界面)
- 先安装screen:
sudo apt update && sudo apt install -y screen - 新建命名会话:
screen -S express-api - 在弹出的新终端中正常执行你的启动命令:
node --inspect -r ts-node/register server.ts - 按下快捷键
Ctrl + A + D即可退出当前会话,进程会保留在后台运行 - 如需切回会话查看输出:
screen -r express-api,切回后按Ctrl + C即可终止进程
方案3:生产环境推荐(PM2 进程管理,支持崩溃重启、开机自启、日志管理)
- 全局安装PM2:
npm install -g pm2 - 启动项目:
pm2 start node --name "express-api" -- --inspect -r ts-node/register server.ts
其中--name参数自定义进程名称方便管理,--后面的内容会作为参数全部传给node进程 - 常用管理命令:
- 查看运行状态:
pm2 status - 查看实时日志:
pm2 logs express-api - 重启进程:
pm2 restart express-api - 停止进程:
pm2 stop express-api
- 查看运行状态:
- 设置开机自启:先执行
pm2 save保存当前进程列表,再执行pm2 startup按终端提示完成操作即可
方案4:系统级服务(systemd 方式,依赖系统自带组件,无需第三方工具)
- 新建服务配置文件
/etc/systemd/system/express-api.service,写入如下内容,注意替换里面的用户名、项目路径为你自己的实际值,不知道node的绝对路径可以执行which node查询后替换ExecStart里的对应路径:[Unit] Description=Express API Service After=network.target [Service] Type=simple User=替换为你的Ubuntu用户名 WorkingDirectory=替换为你的项目根目录绝对路径 ExecStart=/usr/bin/node --inspect -r ts-node/register server.ts Restart=always RestartSec=10 Environment=PATH=/usr/bin:/usr/local/bin [Install] WantedBy=multi-user.target - 重载systemd配置:
sudo systemctl daemon-reload - 启动服务:
sudo systemctl start express-api - 设置开机自启:
sudo systemctl enable express-api - 查看实时日志:
sudo journalctl -u express-api -f - 停止服务:
sudo systemctl stop express-api
内容的提问来源于stack exchange,提问作者user1088984
相关产品推荐
相关产品推荐

