-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathserve.sh
79 lines (76 loc) · 1.88 KB
/
serve.sh
1
#!/bin/bash#变量PROJECTNAME="myblog"PROJECTBASE="."PROJECTBIN="$PROJECTBASE/bin"PROJECTLOGS="$PROJECTBASE/log"prog=$PROJECTNAME#获取当前目录CURDIR=$(dirname $0)cd $CURDIR#运行服务start() { echo -e "Begin to compile the project ---$PROJECTNAME..." #编译go项目 go build -o $PROJECTNAME main.go #赋予权限 chmod 777 "$CURDIR/$PROJECTNAME" echo "Compilation completed" echo "starting $PROJECTNAME,please waiting..." #后台运行项目 nohup ./$PROJECTNAME > $PROJECTLOGS/run.log 2>&1 & echo -e "ok"}#暂停服务stop(){ echo -e $"Stopping the project ---$prog: " #获取进程 pid=$(ps -ef | grep $prog | grep -v grep | awk '{print $2}') if [ "$pid" ]; then echo -n $"kill process pid: $pid " #杀掉进程 kill -9 $pid ret=0 #多次循环杀掉进程 for ((i=1;i<=15;i++)); do sleep 1 pid=$(ps -ef | grep $prog | grep -v grep | awk '{print $2}') if [ "$pid" ]; then kill -9 $pid ret=0 else ret=1 break fi done if [ "$ret" ]; then echo -e $"ok" else echo -e $"no" fi else echo -e $"no program process to stop" fi}#重启服务restart(){ stop sleep 2 start}#判断第一个参数case "$1" instart) $1 ;;stop) $1 ;;restart) $1 ;;*) echo $"Usage: $0 {start|stop|restart}" exit 2 ;;esac