#!/bin/bash # release version version=3.0.0 CWD=$(cd $(dirname $0)/; pwd) cd $CWD usage() { echo $"Usage: $0 {start|stop|restart|status|build|pack} " exit 0 } start_all() { test -x n9e-rdb && start rdb test -x n9e-transfer && start transfer test -x n9e-tsdb && start tsdb test -x n9e-index && start index test -x n9e-judge && start judge test -x n9e-monapi && start monapi test -x n9e-job && start job test -x n9e-ams && start ams test -x n9e-agent && start agent } start() { mod=$1 if [ "x${mod}" = "x" ]; then usage return fi if [ "x${mod}" = "xall" ]; then start_all return fi binfile=n9e-${mod} if [ ! -f $binfile ]; then echo "file[$binfile] not found" exit 1 fi if [ $(ps aux|grep -v grep|grep -v control|grep "$binfile" -c) -gt 0 ]; then echo "${mod} already started" return fi mkdir -p logs/$mod nohup $CWD/$binfile &> logs/${mod}/stdout.log & for((i=1;i<=15;i++)); do if [ $(ps aux|grep -v grep|grep -v control|grep "$binfile" -c) -gt 0 ]; then echo "${mod} started" return fi sleep 0.2 done echo "cannot start ${mod}" exit 1 } stop_all() { test -x n9e-monapi && stop monapi test -x n9e-transfer && stop transfer test -x n9e-tsdb && stop tsdb test -x n9e-index && stop index test -x n9e-judge && stop judge test -x n9e-agent && stop agent test -x n9e-ams && stop ams test -x n9e-job && stop job test -x n9e-rdb && stop rdb } stop() { mod=$1 if [ "x${mod}" = "x" ]; then usage return fi if [ "x${mod}" = "xall" ]; then stop_all return fi binfile=n9e-${mod} if [ $(ps aux|grep -v grep|grep -v control|grep "$binfile" -c) -eq 0 ]; then echo "${mod} already stopped" return fi ps aux|grep -v grep|grep -v control|grep "$binfile"|awk '{print $2}'|xargs kill for((i=1;i<=15;i++)); do if [ $(ps aux|grep -v grep|grep -v control|grep "$binfile" -c) -eq 0 ]; then echo "${mod} stopped" return fi sleep 0.2 done echo "cannot stop $mod" exit 1 } restart() { mod=$1 if [ "x${mod}" = "x" ]; then usage return fi if [ "x${mod}" = "xall" ]; then stop_all start_all return fi stop $mod start $mod status } status() { ps aux|grep -v grep|grep "n9e" } build_one() { mod=$1 go build -ldflags "-X main.version=${version}" -o n9e-${mod} src/modules/${mod}/${mod}.go } build_docker() { mod=$1 go build -ldflags "-X main.version=${version}" -o bin/n9e-${mod} src/modules/${mod}/${mod}.go } build() { export GO111MODULE=on mod=$1 if [ "x${mod}" = "x" ]; then build_one monapi build_one transfer build_one index build_one judge build_one agent build_one tsdb build_one rdb build_one ams build_one job return fi if [ "x${mod}" = "xdocker" ]; then build_docker monapi build_docker transfer build_docker index build_docker judge build_docker agent build_docker tsdb build_docker rdb build_docker ams build_docker job return fi build_one $mod } reload() { mod=$1 if [ "x${mod}" = "x" ]; then echo "arg: is necessary" return fi build_one $mod restart $mod } pack() { v=$1 if [ "x${v}" = "x" ]; then v=$(date +%Y-%m-%d-%H-%M-%S) fi tar zcvf n9e-$v.tar.gz control sql pub etc/service etc/nginx.conf etc/mysql.yml etc/address.yml \ n9e-agent etc/agent.yml \ n9e-tsdb etc/tsdb.yml \ n9e-index etc/index.yml \ n9e-judge etc/judge.yml \ n9e-transfer etc/transfer.yml \ n9e-monapi etc/monapi.yml } case "$1" in start) start $2 ;; stop) stop $2 ;; restart) restart $2 ;; status) status ;; build) build $2 ;; reload) reload $2 ;; pack) pack $2 ;; *) usage esac