gopub/control

174 lines
3.5 KiB
Bash
Executable File

#!/bin/bash -e
export GOROOT=/usr/local/go
export PATH=$PATH:/usr/local/go/bin/
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
BASENAME=`basename $DIR`
export GOPATH=$DIR
export GOBIN=$DIR/bin/
app=$BASENAME
conf=$DIR/src/conf/app.conf
pidfile=$DIR/$BASENAME.pid
logfile=$DIR/$BASENAME.log
function check_pid() {
if [ -f $pidfile ];then
pid=`cat $pidfile`
if [ -n $pid ]; then
running=`ps -p $pid|grep -v "PID TTY" |wc -l`
return $running
fi
fi
return 0
}
function build() {
gofmt -w $DIR/src/
cd $DIR/src/
go build -o $BASENAME
if [ $? -ne 0 ]; then
exit $?
fi
}
function pack() {
build
cd ..
rm -rf $BASENAME/src/logs/*
cd .. && tar zcvf $app.tar.gz $BASENAME/control $BASENAME/src/$app $BASENAME/src/conf $BASENAME/src/logs $BASENAME/src/agent $BASENAME/src/views $BASENAME/src/static $BASENAME/src/favicon.ico
}
function start() {
check_pid
running=$?
if [ $running -gt 0 ];then
echo -n "$app now is running already, pid="
cat $pidfile
return 1
fi
if ! [ -f $conf ];then
echo "Config file $conf doesn't exist, creating one."
fi
cd $DIR/src/
nohup ./$BASENAME >$logfile 2>&1 &
sleep 1
running=`ps -p $! | grep -v "PID TTY" | wc -l`
if [ $running -gt 0 ];then
echo $! > $pidfile
echo "$app started..., pid=$!"
else
echo "$app failed to start."
return 1
fi
}
function killall() {
pid=`cat $pidfile`
ps -ef|grep $BASENAME|grep -v grep|awk '{print $2}'|xargs kill -9
rm -f $pidfile
echo "$app killed..., pid=$pid"
}
function stop() {
#ps -ef|grep $BASENAME|grep -v grep|awk '{print $2}'|xargs kill -9
pid=`cat $pidfile`
kill $pid
rm -f $pidfile
echo "$app stoped..., pid=$pid"
}
function restart() {
stop
sleep 1
start
}
function reload() {
pid=`cat $pidfile`
kill -HUP $pid
sleep 1
newpid=`ps -ef|grep $BASENAME|grep -v grep|awk '{print $2}'`
echo "$app reload..., pid=$newpid"
echo $newpid > $pidfile
}
function status() {
check_pid
running=$?
if [ $running -gt 0 ];then
echo started
else
echo stoped
fi
}
function run() {
cd $DIR/src/
./$BASENAME -docker
#go run main.go
}
function rundocker() {
cd $DIR/src/
./$BASENAME -docker
#go run main.go
}
function init() {
cd $DIR/src/
./$BASENAME -syncdb
#go run main.go
}
function beerun() {
cd $DIR/src/
bee run
}
function tailf() {
tail -f $logfile
}
function docs() {
cd $DIR/src/
bee generate docs
}
function sslkey() {
cd $DIR/src/conf/ssl
###CA:
#私钥文件
openssl genrsa -out ca.key 2048
}
function help() {
echo "$0 build|start|stop|kill|restart|reload|run|rundocker|init|tail|docs|pack|beerun|sslkey"
}
if [ "$1" == "" ]; then
help
elif [ "$1" == "build" ];then
build
elif [ "$1" == "pack" ];then
pack
elif [ "$1" == "start" ];then
start
elif [ "$1" == "stop" ];then
stop
elif [ "$1" == "kill" ];then
killall
elif [ "$1" == "restart" ];then
restart
elif [ "$1" == "reload" ];then
reload
elif [ "$1" == "status" ];then
status
elif [ "$1" == "run" ];then
run
elif [ "$1" == "rundocker" ];then
rundocker
elif [ "$1" == "init" ];then
init
elif [ "$1" == "beerun" ];then
beerun
elif [ "$1" == "tail" ];then
tailf
elif [ "$1" == "docs" ];then
docs
elif [ "$1" == "sslkey" ];then
sslkey
else
help
fi