nightingale/control

278 lines
4.1 KiB
Plaintext
Raw Normal View History

2020-09-26 21:45:23 +08:00
#!/bin/bash
2020-09-26 16:53:10 +08:00
# release version
2021-02-07 17:07:00 +08:00
version=3.6.1
2020-09-26 16:53:10 +08:00
CWD=$(cd $(dirname $0)/; pwd)
cd $CWD
usage()
{
2020-11-28 10:24:26 +08:00
echo $"Usage: $0 {start|stop|restart|status|build|build_local|pack} <module>"
2020-09-26 16:53:10 +08:00
exit 0
}
start_all()
{
test -x n9e-rdb && start rdb
2020-09-26 21:58:37 +08:00
test -x n9e-job && start job
test -x n9e-ams && start ams
test -x n9e-monapi && start monapi
2020-09-26 16:53:10 +08:00
test -x n9e-tsdb && start tsdb
test -x n9e-index && start index
2020-09-26 21:58:37 +08:00
test -x n9e-transfer && start transfer
2020-09-26 16:53:10 +08:00
test -x n9e-judge && start judge
test -x n9e-agent && start agent
2021-01-22 11:45:05 +08:00
test -x n9e-prober && start prober
2020-09-26 16:53:10 +08:00
}
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()
{
2020-09-26 21:58:37 +08:00
test -x n9e-agent && stop agent
test -x n9e-judge && stop judge
2020-09-26 16:53:10 +08:00
test -x n9e-transfer && stop transfer
test -x n9e-index && stop index
2020-09-26 21:58:37 +08:00
test -x n9e-tsdb && stop tsdb
test -x n9e-monapi && stop monapi
2020-09-26 16:53:10 +08:00
test -x n9e-ams && stop ams
test -x n9e-job && stop job
test -x n9e-rdb && stop rdb
2021-01-22 11:45:05 +08:00
test -x n9e-prober && stop prober
2020-09-26 21:58:37 +08:00
}
2020-09-26 16:53:10 +08:00
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
2020-11-28 10:24:26 +08:00
echo -n "building ${mod} ... "
2020-09-26 16:53:10 +08:00
go build -ldflags "-X main.version=${version}" -o n9e-${mod} src/modules/${mod}/${mod}.go
2020-11-28 10:24:26 +08:00
echo "done"
}
build_local_one()
{
mod=$1
echo -n "building ${mod} ... "
go build -mod=vendor -ldflags "-X main.version=${version}" -o n9e-${mod} src/modules/${mod}/${mod}.go
echo "done"
2020-09-26 16:53:10 +08:00
}
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
2021-01-22 11:45:05 +08:00
build_one prober
2020-09-26 16:53:10 +08:00
return
fi
build_one $mod
}
2020-11-28 10:24:26 +08:00
build_local()
{
export GO111MODULE=on
mod=$1
if [ "x${mod}" = "x" ]; then
build_local_one monapi
build_local_one transfer
build_local_one index
build_local_one judge
build_local_one agent
build_local_one tsdb
build_local_one rdb
build_local_one ams
build_local_one job
2021-01-22 11:45:05 +08:00
build_local_one prober
2020-11-28 10:24:26 +08:00
return
fi
build_local_one $mod
}
2020-09-26 16:53:10 +08:00
reload()
{
mod=$1
if [ "x${mod}" = "x" ]; then
echo "arg: <mod> is necessary"
return
fi
build_one $mod
restart $mod
}
pack()
{
2020-10-09 23:02:02 +08:00
clock=$(date +%s)
2021-01-13 12:45:26 +08:00
mkdir -p ~/n9e.bak.$clock
if ls etc/*.local.yml &>/dev/null; then
mv etc/*.local.yml ~/n9e.bak.$clock
fi
2020-10-22 17:50:32 +08:00
tar zcvf n9e-${version}.tar.gz script control sql etc n9e-*
2021-01-13 12:45:26 +08:00
if ls ~/n9e.bak.$clock/*.local.yml &>/dev/null; then
mv ~/n9e.bak.$clock/*.local.yml etc/
fi
rm -rf ~/n9e.bak.$clock
2020-09-26 16:53:10 +08:00
}
exec()
{
params=${@:2}
if [ ${#2} -gt 0 ]; then
for param in $params
do
$1 $param
if [ "x${mod}" = "xall" ]; then
break
fi
done
else
echo $1
$1
fi
}
2020-09-26 16:53:10 +08:00
case "$1" in
start)
exec start ${@:2}
2020-09-26 16:53:10 +08:00
;;
stop)
exec stop ${@:2}
2020-09-26 16:53:10 +08:00
;;
restart)
exec restart ${@:2}
2020-09-26 16:53:10 +08:00
;;
status)
status
;;
build)
exec build ${@:2}
2020-09-26 16:53:10 +08:00
;;
2020-11-28 10:24:26 +08:00
build_local)
exec build_local ${@:2}
2020-11-28 10:24:26 +08:00
;;
2020-09-26 16:53:10 +08:00
reload)
exec reload ${@:2}
2020-09-26 16:53:10 +08:00
;;
pack)
exec pack ${@:2}
2020-09-26 16:53:10 +08:00
;;
*)
usage
esac