我們在微服務架構上。我想用一個bash腳本切換到我們服務的不同區域。我對bash很陌生,這是我的不客氣的嘗試。用bashscript啓動多個nodemon
#!/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腳本時提供的env變量啓動所有服務器和服務。要更改語言環境,必須使用新的env變量重新啓動整個grunt進程,這非常耗時。這就是腳本進場的地方。它只停止微服務並用新變量重新啓動它們。需要不到5秒。我想補充的唯一不錯的功能是Nodemon分別與每個目錄一起工作。 Atm nodemon僅查看主進程目錄中的更改,然後重新啓動所有服務器 –