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