TP5 通过shell建立PHP守护程序
用 vim建立 /etc/init.d/keepalive文件
#!/bin/bash
# chkconfig: 2345 10 90
# description: Start and Stop KEEP_ALIVE PHP="/usr/local/php/bin/php" KEEP_ALIVE_DIV="/home/wwwroot/keep-alive.qunarmei.com"
KEEP_ALIVE_SCRIPT='think' #服务脚本
KEEP_ALIVE_NAME="ChatServer" #你自定义的服务名称
KEEP_ALIVE_PID="${KEEP_ALIVE_DIV}/application/chat/command/${KEEP_ALIVE_NAME}.pid" #服务PID
KEEP_ALIVE_LOG="${KEEP_ALIVE_DIV}/${KEEP_ALIVE_NAME}.log" #服务运行日志 记录错误信息 #判断程序是否已经在运行
status_script(){
ps -fe|grep ${KEEP_ALIVE_SCRIPT}|grep ${KEEP_ALIVE_NAME}|grep -v grep
if [ $? -eq 0 ]
then
echo ${0}' Is running'
running=1 elif [ $? -ne 0 ]
then
echo $0" is NOT running"
running=2
fi
} #启动脚本,先判断脚本是否已经在运行
start_script(){
status_script
if [ ${running} -eq 1 ]
then
echo ${0}' Is starting ...'
else
echo 'start' ${0} '...'
cd ${KEEP_ALIVE_DIV}
nohup ${PHP} ${KEEP_ALIVE_SCRIPT} ${KEEP_ALIVE_NAME}>/dev/null 2>${KEEP_ALIVE_LOG} &
echo $! > ${KEEP_ALIVE_PID}
echo "start finish,PID $!"
fi
} #停止脚本
stop_script(){ status_script
if [ ${running} -ne 1 ]
then
echo ${0}' no starting '$?...
else
PIDS=`ps aux|grep ${KEEP_ALIVE_SCRIPT}|grep ${KEEP_ALIVE_NAME}| grep -v grep |awk '{print $2}'`
for kill_pid in ${PIDS}
do
kill -TERM ${kill_pid} >/dev/null 2>&1
echo "Kill pid ${kill_pid} .."
done
echo 'stop complete'
return 1
fi } #重启脚本
reload_script(){
stop_script
sleep 3
start_script
}
#入口函数
handle(){
case $1 in
start)
start_script
;;
stop)
stop_script
;;
status)
status_script
;;
reload)
reload_script
;;
restart)
reload_script
;;
*)
echo 'KEEP_ALIVE OF THIS SERVER IS '${0} 'status|start|stop|restart';
;;
esac
} if [ $# -eq 1 ]
then
handle $1
else
echo 'KEEP_ALIVE OF THIS SERVER IS '${0} 'status|start|stop|restart';
fi
- 把文件权限设成 755
chmod 755 /etc/init.d/keepalive
- 设成开机启动
chkconfig keepalive on- 搞定 试一下
service keepalive status service keepalive start service keepalive service keepalive stop
如果你的将服务不稳定,可以把他加到计划任务定时重启 保证后端一直执行
dos2unix shell/keepalive.sh
TP5 通过shell建立PHP守护程序的更多相关文章
- shell登录模式及其相应配置文件(转)
参考<linux命令.编辑器与shell编程>(清华大学出版社) 当启动shell时,它将运行启动文件来初始化自己.具体运行哪个文件取决于该shell是登陆shell还是非登陆shell的 ...
- 【渗透课程】特别篇-主流网站程序Oday大全以及拿shell思路
版权和内容说明: 这篇文章不是本站编写,是从网络上摘抄的,但是经过了本站的改写优化,并将内容,格式规范化. 本篇说明:这篇文章结合了前辈们前几年一路挖掘出来的主流程序漏洞以及思路, 小编写在前面是想让 ...
- Linux——模拟实现一个简单的shell(带重定向)
进程的相关知识是操作系统一个重要的模块.在理解进程概念同时,还需了解如何控制进程.对于进程控制,通常分成1.进程创建 (fork函数) 2.进程等待(wait系列) 3.进程替换(exec系列) 4 ...
- 配置和启动脚本(bash shell学习01)
bash是 Bourne Again Shell简称 ,从unix系统的sh发展而来 查看当前shellecho $SHELL查看系统支持的shellcat /etc/shells cd /binls ...
- Linux Shell系列教程之(二)第一个Shell脚本
本文是Linux Shell系列教程的第(二)篇,更多shell教程请看:Linux Shell系列教程 通过上一篇教程的学习,相信大家已经能够对shell建立起一个大体的印象了,接下来,我们通过一个 ...
- 6.linux 用户和权限的建立
一.用户和权限的建立 su 用户名 切换用户,如果是root用户切换其他用户,不需要输入密码. exit 可以切换回上一个用户 linux 操作系统用户 ...
- 浅谈ASM中的SLB
接触Azure几个月,总想写点什么,迟迟没有动笔,一是怕自己技术粗鄙,写的东西会令人捧腹,二是工作原因,时间比较匆忙,在此再次声明,以下写的东西都是我个人看法,若有不足,请多多包涵!!! 情景是这样的 ...
- IP欺骗原理与过程分析
IP欺骗攻击法 原创:r00t <r00t@unsecret.org> QQ: 22664566 http://www.unsecret.org --------------------- ...
- CVE-2014-4877 && wget: FTP Symlink Arbitrary Filesystem Access
目录 . 漏洞基本描述 . 漏洞带来的影响 . 漏洞攻击场景重现 . 漏洞的利用场景 . 漏洞原理分析 . 漏洞修复方案 . 攻防思考 1. 漏洞基本描述 0x1: Wget简介 wget是一个从网络 ...
随机推荐
- 【linux】head&&tail
命令: head[-n][文件名] tail[-n][-f][文件名] 形式: -n 行数 (显示前几行) ...
- Python yield详解***
yield的英文单词意思是生产,有时候感到非常困惑,一直没弄明白yield的用法. 只是粗略的知道yield可以用来为一个函数返回值塞数据,比如下面的例子: def addlist(alist): f ...
- 黄聪:mysql搬家,直接复制data文件夹(*.MYD,*.MYI,innodb)出错,无法正常显示
解决办法: 1.复制旧mysql的data文件夹中的数据库到新mysql的data文件夹内. 2.删掉旧的“ib_logfile*”等日志文件,重启MySQL后会自动生成新的日志文件的. 3.复制旧的 ...
- Bootstrap-CL:警告
ylbtech-Bootstrap-CL:警告 1.返回顶部 1. Bootstrap 警告(Alerts) 本章将讲解警告(Alerts)以及 Bootstrap 所提供的用于警告的 class.警 ...
- Bootstrap-Plugin:按钮(Button)插件
ylbtech-Bootstrap-Plugin:按钮(Button)插件 1.返回顶部 1. Bootstrap 按钮(Button)插件 按钮(Button)在 Bootstrap 按钮 一章中介 ...
- Bootstrap-Plugin:提示工具(Tooltip)插件
ylbtech-Bootstrap-Plugin:提示工具(Tooltip)插件 1.返回顶部 1. Bootstrap 提示工具(Tooltip)插件 当您想要描述一个链接的时候,提示工具(Tool ...
- mysql 8.0 初识
1 下载并安装mysql 8.0官网下载比较慢,这里选择163的镜像http://mirrors.163.com/mysql/Downloads/MySQL-8.0/下载版本mysql-8.0.14- ...
- PHP中的=>,->,@,&,::,%
在php中数组默认键名是整数,也可以自己定义任意字符键名(最好是有实际意义).如: $css=array('style'=>'0',‘color’=>‘green‘), 则$css['st ...
- 《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #12 使用Memory Cgroup限制内存使用量
HACK #12 使用Memory Cgroup限制内存使用量 Memory Cgroup是Cgroup的资源限制功能之一,可以控制特定进程可以使用的内存量.Memory CgroupMemory C ...
- js解决弹窗问题实现班级跳转DIV示例
js解决弹窗问题实现班级跳转DIV 1.js代码如下: <%--实现班级跳转DIV--%> <div id="displayClassDiv" style=&q ...