#! /bin/bash

DTHOME=/usr/local/dingtone
LISTPORT=443
BINNAME=xedge

check_port(){
    pid=$(ps -ef | grep "./$BINNAME$" | grep -v grep | awk '{print $2}')
    info=`netstat -anop | grep $LISTPORT | grep LISTEN`

    if [ $? -eq 0 ]; then
        occpid=`echo $info | awk '{print $7}' | sed  's/\([0-9]*\).*/\1/g'`
        echo "Port ${LISTPORT} is occupied, pid is $pid, real occupied by $occpid"
        if [ "$pid" != "" ] && [ $pid -eq $occpid ]; then
            echo "pid :$pid is bind on port ${LISTPORT} successfully"
        else
            echo "Port ${LISTPORT} is occupied by $occpid, will kill it"
            if [ "$pid" != "" ]; then
                kill -9 $pid
            fi
            if [ "$occpid" != "" ]; then
                kill -9 $occpid
            fi
        fi
    else
        echo "Port ${LISTPORT} is occupied by ${BINNAME} server"
        kill -9 $pid
    fi
}

while [ 1=1 ]; do
  cd $DTHOME; nohup ./$BINNAME > /var/log/dingtone/$BINNAME.out 2>&1 &
  pid=$!
  sleep 10
#  check_port
  wait $pid
done