host 游戏启动脚本
语言:
#!/usr/bin/env bash

#host主机引导启动控制脚本入口文件
#进入当前目录
cd $(dirname $0)

cmd=$1
hostId=$2
phpBin=php

#当前目录
nowDir=$(pwd)

#当前文件
nowFile=$nowDir/boot.sh

#主机入口
nowHost=$nowDir/host.php

#项目名称:/data/htdocs/(*)/server/ ,切分后第4项
projectName=$(echo $nowDir | awk -F '/' '{print $4}'); #项目名称

#输出
echo "当前工作目录: ${nowDir}"

case $cmd in
show)
    ps -ef | grep $nowDir | grep php | awk '{print "hostId="$NF, $0}' | sort
    ;;
showAll)
    ps -ef | grep $nowDir
    ;;
debug)
    $phpBin $nowHost $hostId debug
    ;;
start)
    startLog=/data/log/$projectName/sbin/host-$hostId.log
    echo "进入目录:${nowDir}";
    echo "启动守护进程(host-keep.sh)并放入后台";
    #调用启动脚本
    nohup sh $nowFile keep $hostId >> $startLog 2>&1 &
    echo 等待2秒后查看日志
    sleep 2
    tail $startLog
    ;;
keep)
    while [ "1" = "1" ]
    do
        echo 启动时间:
        date
        $phpBin $nowHost $hostId

        if [[ "$?" == "4" ]]; then
            echo "保持脚本被 php 程序强制退出";
            exit; #退出保持脚本
        fi

        echo php程序状态:$?
        echo 3秒后重新启动
        sleep 3
    done
    ;;
restart)
    #杀死某个主机的php进程的脚本
    ps -ef | grep $nowDir | grep php | grep $hostId | awk '{print $2}' | xargs kill
    ;;
restartAll)
    #杀死所有php脚本
    ps -ef | grep $nowDir | grep php | awk '{print $2}' | xargs kill
    ;;
stop)
    #杀死某个主机的进程的脚本
    ps -ef | grep $nowDir | grep sh | grep $hostId | awk '{print $2}' | xargs kill
    ps -ef | grep $nowDir | grep php | grep $hostId | awk '{print $2}' | xargs kill
    ;;
stopAll)
    #先杀shell进程,再杀php进程
    ps -ef | grep $nowDir | grep sh | awk '{print $2}' | xargs kill
    ps -ef | grep $nowDir | grep php | awk '{print $2}' | xargs kill
    ;;
*)
    echo $"Usage: $0 {show|showAll|start|keep|restart|restartAll|stop|stopAll}"
    exit 2