#!/usr/bin/env bash
# 系统守护进程管理脚本 [PHP]
# 获得 PHP 的位置
PHP=/usr/local/php
if [ ! -f $PHP ] ; then
PHP=`which php`
fi
# 需要守护启动的脚本
COMMANDS=(
"cli.php reward" ##颁奖任务
"cli.php table-log" ## 同步牌局日志
"cli.php statis"
"cli.php chips-log" ## 同步金币明细
"cli.php report" ## 数据统计报表
)
ACTION="@$1"
ROOT=$(cd "$(dirname "$0")"; cd ../; pwd)
LOGPATH=$ROOT/data/logs/`date +%Y%m%d`
LOGFILE=$LOGPATH/task-manager.log
if [ ! -d $LOGPATH ] ; then
mkdir -p $LOGPATH
fi
service_start() {
for ((i = 0; i < ${#COMMANDS[@]}; i++)) ; do
PNAME=$ROOT/bin/${COMMANDS[$i]}
PID=`ps -ef | grep cli.php | grep "$PNAME" | grep -v grep | awk '{print $2}'`
if [ "$PID" ] ; then
echo -e "$PNAME\t\033[33;49;2m[ 运行中 ]\033[39;49;0m"
else
$PHP $PNAME > /dev/null &
if [ $? -eq 0 ];then
echo -e "$PNAME\t\033[32;49;2m[ 已启动 ]\033[39;49;0m"
echo -e "$(date +'%Y-%m-%d %H:%M:%S') [START] $PNAME" >> $LOGFILE
else
echo -e "\033[31m [启动失败] \033[0m"
fi
fi
done
}
service_stop() {
for ((i = 0; i < ${#COMMANDS[@]}; i++)) ; do
PNAME=$ROOT/bin/${COMMANDS[$i]}
PID=`ps -ef | grep cli.php | grep "$PNAME" | grep -v grep | awk '{print $2}'`
if [ "$PID" ] ; then
kill -9 $PID
echo -e "$PNAME\t\033[31;49;2m[ 已停止 ] \033[39;49;0m"
echo -e "$(date +'%Y-%m-%d %H:%M:%S') [STOP] $PNAME" >> $LOGFILE
else
echo -e "$PNAME\t\033[37;49;2m[ 未运行 ]\033[39;49;0m"
fi
done
}
service_status() {
for ((i = 0; i < ${#COMMANDS[@]}; i++)) ; do
PNAME=$ROOT/bin/${COMMANDS[$i]}
PID=`ps -ef | grep cli.php | grep "$PNAME" | grep -v grep | awk '{print $2}'`
if [ "$PID" ] ; then
echo -e "$PNAME\t\033[33;49;2m[ 运行中 ]\033[39;49;0m"
else
echo -e "$PNAME\t\033[37;49;2m[ 未运行 ]\033[39;49;0m"
fi
done
}
# 检查死掉的进程,并重启
if [ $ACTION = "@start" ] ; then
service_start
# 停止所有 CLI 进程
elif [ $ACTION = "@stop" ] ; then
service_stop
# 重启所有进程
elif [ $ACTION = '@restart' ] ; then
service_stop
service_start
# 显示当前运行状态
elif [ $ACTION = '@status' ] ; then
service_status
# 显示所有当前状态
else
STATS=`ps aux | grep service | grep "cli.php" | grep -v grep`
if [ "$STATS" ] ; then
echo "当前进程状况:"
echo "$STATS"
fi
echo "使用命令:$0 [start|stop|restart|status]"
fi