Linux终端如何同时运行两个进程?实现不同目录同时启动React应用与Apollo服务
Linux终端同时运行React前端与Apollo服务端的解决方案
以下是3种常用的实现方案,可根据自身使用场景选择:
方案1:进程后台挂载(无需额外工具)
直接通过Shell内置的后台运行符实现,操作步骤如下:
- 进入apollo前端目录,执行以下命令将前端进程放入后台运行:
命令末尾的yarn start &&表示将进程转入后台执行,执行后会返回进程PID,后续可通过该PID管理进程。 - 保持当前终端不关闭,执行
cd server进入服务端目录,同样后台启动服务端:yarn dev & - 常用管理命令:
- 查看当前终端所有后台进程:
jobs - 将后台进程切回前台(如查看日志、终止进程):
fg %进程编号(进程编号为jobs命令输出的序号,不是PID) - 直接终止后台进程:
kill %进程编号
- 查看当前终端所有后台进程:
- 如果需要避免日志刷屏,可将输出重定向到日志文件,示例:
yarn start > frontend.log 2>&1 & - 如果需要退出终端后进程仍持续运行,在命令前加
nohup即可:nohup yarn start &
方案2:终端多路复用工具(可同时查看双端日志)
适合需要实时查看两个进程输出日志的开发场景,常用工具为tmux,操作步骤如下:
- 若未安装tmux,先执行对应系统的安装命令,Debian/Ubuntu系示例:
sudo apt update && sudo apt install tmux - 执行
tmux启动tmux会话 - 在第一个窗口中进入apollo目录,执行
yarn start启动前端 - 按下
ctrl + b后松开,再按c新建一个tmux窗口,在新窗口中进入server目录,执行yarn dev启动服务端 - 切换窗口操作:按下
ctrl + b后松开,再按p切到上一个窗口、按n切到下一个窗口,按下对应窗口数字可直接跳转到指定窗口 - 需终止进程时,切到对应窗口按下
ctrl + c即可
方案3:concurrently统一管理(开发场景最推荐)
通过npm包concurrently实现单命令启动双进程,自动区分日志前缀,统一终止,操作步骤如下:
- 进入apollo根目录,安装concurrently为开发依赖:
yarn add -D concurrently - 打开根目录的
package.json文件,在scripts字段中添加统一启动脚本:{ "scripts": { // 保留原有其他脚本 "start:all": "concurrently \"yarn start\" \"cd server && yarn dev\"" } } - 后续直接执行
yarn start:all即可同时启动前后端,日志会自动带前缀区分,按下ctrl + c会同时终止两个进程。
内容的提问来源于stack exchange,提问作者ny195
相关产品推荐
相关产品推荐

