252 lines
3.5 KiB
Bash
Executable File
252 lines
3.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# release version
|
|
version=4.0.2
|
|
|
|
CWD=$(cd $(dirname $0)/; pwd)
|
|
cd $CWD
|
|
|
|
usage()
|
|
{
|
|
echo $"Usage: $0 {start|stop|restart|status|build|build_local|pack} <module>"
|
|
exit 0
|
|
}
|
|
|
|
start_all()
|
|
{
|
|
test -x n9e-server && start server
|
|
test -x n9e-agentd && start agentd
|
|
test -x n9e-prober && start prober
|
|
}
|
|
|
|
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-server && stop server
|
|
test -x n9e-prober && stop prober
|
|
test -x n9e-agentd && stop agentd
|
|
}
|
|
|
|
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
|
|
echo -n "building ${mod} ... "
|
|
go build -ldflags "-X main.version=${version}" -o n9e-${mod} src/modules/${mod}/${mod}.go
|
|
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"
|
|
}
|
|
|
|
build()
|
|
{
|
|
export GO111MODULE=on
|
|
|
|
mod=$1
|
|
if [ "x${mod}" = "x" ]; then
|
|
build_one server
|
|
build_one agentd
|
|
build_one prober
|
|
return
|
|
fi
|
|
|
|
build_one $mod
|
|
}
|
|
|
|
build_local()
|
|
{
|
|
export GO111MODULE=on
|
|
|
|
mod=$1
|
|
if [ "x${mod}" = "x" ]; then
|
|
build_local_one server
|
|
build_local_one agentd
|
|
build_local_one prober
|
|
return
|
|
fi
|
|
|
|
build_local_one $mod
|
|
}
|
|
|
|
reload()
|
|
{
|
|
mod=$1
|
|
if [ "x${mod}" = "x" ]; then
|
|
echo "arg: <mod> is necessary"
|
|
return
|
|
fi
|
|
|
|
build_one $mod
|
|
restart $mod
|
|
}
|
|
|
|
pack()
|
|
{
|
|
clock=$(date +%s)
|
|
mkdir -p ~/n9e.bak.$clock
|
|
|
|
if ls etc/*.local.yml &>/dev/null; then
|
|
mv etc/*.local.yml ~/n9e.bak.$clock
|
|
fi
|
|
|
|
tar zcvf n9e-${version}.tar.gz script control sql etc n9e-*
|
|
|
|
if ls ~/n9e.bak.$clock/*.local.yml &>/dev/null; then
|
|
mv ~/n9e.bak.$clock/*.local.yml etc/
|
|
fi
|
|
|
|
rm -rf ~/n9e.bak.$clock
|
|
}
|
|
|
|
exec()
|
|
{
|
|
|
|
params=${@:2}
|
|
|
|
if [ ${#2} -gt 0 ]; then
|
|
for mod in $params
|
|
do
|
|
mod=${mod#n9e-}
|
|
$1 $mod
|
|
if [ "x${mod}" = "xall" ]; then
|
|
break
|
|
fi
|
|
done
|
|
else
|
|
echo "todo $1 at "$(date "+%Y-%m-%d %H:%M:%S")
|
|
$1
|
|
echo "done $1 at "$(date "+%Y-%m-%d %H:%M:%S")
|
|
fi
|
|
}
|
|
|
|
case "$1" in
|
|
start)
|
|
exec start ${@:2}
|
|
;;
|
|
stop)
|
|
exec stop ${@:2}
|
|
;;
|
|
restart)
|
|
exec restart ${@:2}
|
|
;;
|
|
status)
|
|
status
|
|
;;
|
|
build)
|
|
exec build ${@:2}
|
|
;;
|
|
build_local)
|
|
exec build_local ${@:2}
|
|
;;
|
|
reload)
|
|
exec reload ${@:2}
|
|
;;
|
|
pack)
|
|
exec pack ${@:2}
|
|
;;
|
|
*)
|
|
usage
|
|
esac
|