#!/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