【发布时间】:2018-01-29 20:49:28
【问题描述】:
我们在微服务架构上。我想使用一个 bash 脚本切换到我们服务的不同语言环境。我是 bash 的新手,这是我的菜鸟尝试。
#!/bin/bash
#RUN THIS COMMAND BEFORE FIRST USE - sudo chmod u+x locale-changer.sh
#DIRECTIONS
#THIS SCRIPT ASSUMES YOU HAVE ALREADY STARTED NPM RUN LOCAL OR REGION=AA DEFAULT_MARKET=PT-BR NODE_ENV=local-qat2 grunt watch
#AFTER STARTING YOUR GRUNT SCRIPT OPEN A NEW TERMINAL TAB AND TYPE IN APPROPRIATE LOCALE NPM SCRIPT EXAMPLE npm run fc TO LAUNCH FRENCH CANADA LOCALE
#PLEASE SEE package.json, FOR LOCALE SPECIFIC SCRIPTS.
# NODEMON=nodemon
# if ! [ -x "$(command -v nodemon)" ]; then
# echo 'nodemon not installed using node'
# NODEMON=node
# fi
pid=$(lsof -i tcp:3000 -t); kill -TERM $pid || kill -KILL $pid
pid=$(lsof -i tcp:3001 -t); kill -TERM $pid || kill -KILL $pid
pid=$(lsof -i tcp:3002 -t); kill -TERM $pid || kill -KILL $pid
pid=$(lsof -i tcp:3003 -t); kill -TERM $pid || kill -KILL $pid
pid=$(lsof -i tcp:3004 -t); kill -TERM $pid || kill -KILL $pid
pid=$(lsof -i tcp:3005 -t); kill -TERM $pid || kill -KILL $pid
pid=$(lsof -i tcp:3006 -t); kill -TERM $pid || kill -KILL $pid
pid=$(lsof -i tcp:3008 -t); kill -TERM $pid || kill -KILL $pid
REGION=$1
DEFAULT_MARKET=$2
NODE_ENV=$3
echo "Starting services with REGION=$REGION DEFAULT_MARKET=$DEFAULT_MARKET NODE_ENV=$NODE_ENV"
current_dir=$PWD;cd /path/to/your/command/dir;special command ARGS;cd $current_dir;
PORT=3003 REGION=$REGION DEFAULT_MARKET=$DEFAULT_MARKET NODE_ENV=$NODE_ENV node ../core-service1/app/server/server.js &
PORT=3002 REGION=$REGION DEFAULT_MARKET=$DEFAULT_MARKET NODE_ENV=$NODE_ENV node ../code-service2/app/server/server.js &
PORT=3000 REGION=$REGION DEFAULT_MARKET=$DEFAULT_MARKET NODE_ENV=$NODE_ENV nodemon ../router/app/server/server.js &
PORT=3001 REGION=$REGION DEFAULT_MARKET=$DEFAULT_MARKET NODE_ENV=$NODE_ENV node ./app/server/server.js &
PORT=3004 REGION=$REGION DEFAULT_MARKET=$DEFAULT_MARKET NODE_ENV=$NODE_ENV node ../core-service3/app/server/server.js &
PORT=3005 REGION=$REGION DEFAULT_MARKET=$DEFAULT_MARKET NODE_ENV=$NODE_ENV node ../core-service4/app/server/server.js &
PORT=3008 REGION=$REGION DEFAULT_MARKET=$DEFAULT_MARKET NODE_ENV=$NODE_ENV nodemon ../core-service5/app/server/server.js
trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM EXIT
问题是我希望 nodemon 只重新启动它检测到更改的服务器。现在的情况如果我在其中一个服务器目录中更改某些内容,nodemon 不会获取任何更改。仅当我更改最初启动进程的目录中的某些内容时,nodemon 才会同时重新启动所有服务器。
非常感谢您的耐心和建议。
【问题讨论】:
-
你能提供更多细节吗?
-
好的,所以我们的 grunt 脚本最初使用启动 grunt 脚本时提供的环境变量启动所有服务器和服务。要更改语言环境,您必须使用新的环境变量重新启动整个 grunt 过程,这非常耗时。这就是这个脚本发挥作用的地方。它只停止微服务并使用新变量重新启动它们。不到 5 秒。我想添加的唯一不错的功能是 Nodemon 分别与每个目录一起工作。 atm nodemon 仅查看主进程目录中的更改并重新启动所有服务器
标签: javascript node.js bash shell nodemon